UNIX で、ファイルの特定の行を印刷することはできますか? たとえば、 file の 10 行目を印刷したいと思いますexample.c
。cat
、ls
で試してみましawk
たが、どうやらこれらには機能がないか、正しく読み取ることができませんman
:-)。
7 に答える
awkの使用:
awk 'NR==10' file
sedの使用:
sed '10!d' file
sed -n '10{p;q;}' example.c
の10行目を印刷example.c
します。
頭と尾を試してみてください。線の量と開始位置を指定できます。
3 行目を取得するには:
head -n 3 yourfile.c | tail -n 1
残念ながら、指定された行番号がファイルの合計行数よりも大きい場合、head
/を使用する他のすべてのソリューションは正しく機能しません。tail
これは行番号 N を出力するか、N が総行数を超えている場合は何も出力しません:
grep "" file | grep "^20:"
出力から行番号を切り取りたい場合は、次のようにパイプしますsed
:
grep "" file | grep "^20:" | sed 's/^20://'
head -n 10 /tmp/asdf | tail -n 1
これを試して:
cat -n <yourfile> | grep ^[[:space:]]*<NUMBER>[[:space:]].*$
cat -n ファイルに番号を付ける
grep の正規表現は、番号が付けられた行を検索します;-) コメントに記載されているように、元のものが一致しませんでした。現在のものは完全一致を探します。- つまり、特定の cas では、任意の量 ( ) のスペースで始まり、その後にスペースが続き、その後に任意の数 (. )が続く行が必要です。
誰かがこの正規表現を試してみて、まったく理解できなかった場合に備えて、開始するための優れたチュートリアルを次に示します: http://regex.learncodethehardway.org/book/ (難しい例として python 正規表現を使用しています)。
これはあなたのために働くかもしれません:
sed '10q;d' file