やりたいこと
以下のようなテキストファイルがあったとして
$ cat test.txt a 1 A b 2 B c 3 C d 4 D
数字が入った行(3で割って余りが2の行)のみを表示する。
環境情報
- sed (GNU sed) 4.4
やり方
以下構文でファイルの3行目のみを抜きだすことができるので
sed -n 3p filename.txt
以下を実行すると
$ for i in `seq 0 10`;do a=`expr $i \* 3 + 2`; sed -n "$a"p test.txt ;done
要件通りの値が出力される。
1 2 3 4
以下、補足です。
補足
シェルスクリプト形式でも実現できますがsedのオプションを利用すればもう少しシンプルに記載できます。
exprあたりで空白が抜けると以下のようにループが回り切ってエラーが画面に出るので、試す際はseqの数字を小さくしておくことをオススメします。
$ for i in `seq 0 10`;do a=`expr $i \* 3+2`; sed -n "$a"p test.txt ;done expr: non-integer argument ...
以上、ご参考になれば幸いです。