2012-03-12 4 views

ответ

2

sed может печатать строку диапазонов, указанных, так и в этот случай будет sed -n 24356,24356p $FILE

+3

Еще один хороший. Имейте в виду, что для строки _single_ вы можете просто использовать 'sed -n 24356p input_file'. – paxdiablo

+1

Как только вы достигли линии, нет смысла читать! 'sed '24356! d; q'' – potong

3

Вы можете получить определенную линию с awk:

awk 'NR==24356{print;exit}' input_file 

Это будет печатать строку и выйти, как только номер записи NR является то, что вы хотите, в противном случае он не будет делать ничего. exit это убедиться, что вы не обрабатывать строки без необходимости после того, вы заинтересованы в

Например, в следующей расшифровку:.

pax> cat qq.sh 
while read line 
do 
    echo "Reading within the loop: [$line]" 
    echo -n "What do you want to say? " 
    read -u 3 something 
    echo "You input: [$something]" 
done 3<&0 <qq.sh 

pax> awk 'NR==2{print;exit}' qq.sh 
do 

pax> awk 'NR==3{print;exit}' qq.sh 
    echo "Reading within the loop: [$line]" 
+1

По умолчанию печать будет выполняться только в том случае, если вы предоставили условие, которое оценивает значение true. Этого достаточно: 'awk 'NR == 24356' file' –

+0

Не нужно читать после того, как вы достигли нужной строки. 'awk 'NR == 24356 {print; exit}'' – potong

+0

Оба хороших момента, ребята. Я включил их в ответ. – paxdiablo

2

Попробуйте это:

cat filename | head -24356 | tail -1 

команда, используемая должна быть доступна на каждом * nix system

+1

Или сэкономьте себе процесс и используйте' head -23456 filename | tail -1', хотя я должен признать, что я часто буду запускать конвейеры с 'cat', так как это проще, чем помнить, какие команды могут принимать имя файла и которые просто хотят стандартного ввода :-) – paxdiablo

Смежные вопросы