これは私のサンプルファイルです。
user@linux:~$ cat file.txt
Line 1
Line 2
Line 3
Line 4
Line 5
user@linux:~$
2〜4行を印刷できます。grep -A2 'e 2' file.txt
user@linux:~$ grep -A2 'e 2' file.txt
Line 2
Line 3
Line 4
user@linux:~$
旅行番号も印刷できます。grep -n
user@linux:~$ grep -nA2 'e 2' file.txt
2:Line 2
3-Line 3
4-Line 4
user@linux:~$
または、次の方法で同じことを実行できます。sed -n 2,4p file.txt
user@linux:~$ sed -n 2,4p file.txt
Line 2
Line 3
Line 4
user@linux:~$
しかし、行番号を出力する方法がわかりません。sed
行番号を印刷できますかsed
?
答え1
AWK:
awk 'NR==2,NR==4{print NR" "$0}' file.txt
ダブルsed:
sed '2,4!d;=' file.txt | sed 'N;s/\n/ /'
グレンジャックマン~のsedそして生地:
sed '2,4!d;=' file.txt | paste -d: - -
バート~の真珠バージョン:
perl -ne 'print "$. $_" if 2..4' file.txt
猫そしてsed:
cat -n file.txt | sed -n '2,4p'
これも見てください回答エマルジョン。
少し説明する:
sed -n '2,4p'
同じことを行いますsed '2,4!d'
。 1 つ目は 2 番目と 4 番目(含む)の間の行だけを印刷し、後者はその行を除くすべての行を「削除」します。sed =
行番号の印刷その後に改行文字が続きます。。より手動。cat -n
最後の例では、またはnl
で置き換えることができますgrep -n ''
。
答え2
以下の2つの方法で行いました。
方法1
awk '/2/{x=NR+2}(NR<=x){print NR"-"$0 }' filename
注文する
2-Line 2
3-Line 3
4-Line 4
方法2
sed -n '{;=;p}' filename| sed "N;s/\n/ /g"| sed -n '/2/,+2p'
出力
2 Line 2
3 Line 3
4 Line 4
答え3
これはまさにそうではありませんかnl
?
その後、目的の方法を使用して行を選択できます。
(編集する)
すべてPOSIX、nl
する空行数:
$ nl -b a example
1 line1
2
3 line3
4
5 line5
6
$ nl -b a < example | sed -n '2,4p'
2
3 line3
4
出力のみを計算したい場合は、パイプを逆にするだけです。