やりたいこと
テキストの任意の行を一行ずつ処理する。
一例として、5行のファイルから3行目を表示し、1行目を表示し、4行目を表示する。
コマンド実行環境
- Debian GNU/Linux 9 (stretch)
サンプルファイルの準備
サンプルとして以下ファイルtest.txt
を用意しました。5行分のファイルです。
a b c d e
やり方
以下スクリプトで実現可能です。in の後ろの部分の数字を任意に変えれば処理箇所の変更も可能です。
#!/bin/bash for i in 3 1 4 do x=`cat test.txt | head -n $i | tail -n 1` echo $x done
今回はechoで表示しているだけですが、行全体が$xに格納されているので追加で処理も可能です。
実行例
c a d
以下、補足です。
補足
やり方は単純で行全体から先頭$i行目までを取得し、その末尾1行目を抜き出すので結果的に先頭から$i行目を取得できます。
全行を頭から順に処理するのであれば以下でシンプルに実現できますが
#!/bin/bash while read line do echo $line done < ./test.txt
ピンポイントな行に対して処理を行うのであれば
#!/bin/bash for i in 1 2 3 do x=`cat test.txt | head -n $i | tail -n 1` echo $x done
といった記載は有用です。
以上、ご参考になれば幸いです。