
テキストファイル(input.txt)で最初の6行をスキップしてawkを使用して残りを処理するにはどうすればよいですか?私のawkスクリプト(program.awk)の形式は次のとおりです。
BEGIN {
}
{
process here
}
END {
}
私のテキストファイルは次のとおりです。
0
3
5
0.1 4.3
2.0 1.5
1.5 3.0
0.3 3.3
1.5 2.1
.
.
.
以下からファイル処理を開始したいと思います。
0.3 3.3
1.5 2.1
.
.
.
答え1
次の2つのモードのいずれかを使用してください。
NR>6 { this_code_is_active }
またはこれ:
NR<=6 { next }
{ this_code_is_active }
awkの引数として多くのファイルがあり、各ファイルの6行をスキップするには、NRの代わりにFNRを使用します。
答え2
努力する:
awk 'FNR > 6 { #process here }' file
答え3
head
または、プログラムを使用してファイルの先頭または末尾から必要な数の行をスキップすることもできますtail
。
あなたの具体的な質問については
tail input.txt -n+7 | program.awk
program.awk
ファイルが実行可能であれば大丈夫です。それ以外の場合は、次のものを使用できます。
tail input.txt -n+7 | awk -f program.awk
これにより、各行を比較する必要がなく、AWKコードのロジックを変更する必要もありません。
tail
テキストは7行目からストリーミングされ、最初の6行目はスキップされます。
これは、特にキャッシングのためにテキスト処理が些細な場合、パフォーマンスに大きな影響を与えません。ただし、長いファイルを使用してクラウド環境で再利用すると、いくつかのコスト削減が発生する可能性があります。
答え4
for pkg in $(pip list | awk 'FNR > 2 { print $1 }'); do pip install --upgrade $pkg; done