簡単な質問がありますが、このフォーラムや awk 学習サイトで見つけるにはあまりにも単純すぎます。
数字で始まる行に一致する awk コードがあり、その行の 6 列目を出力します。
/^[1-9]/ {
print $6
}
一致した列の最初の 50 行のみを印刷するように指示するにはどうすればよいですか?
追加の質問
以下の独自のバージョンの回答を使用してみましたが、50行印刷できました。ただし、現在、印刷する 50 行を選択しようとしています。これを行うには、数字で始まり「residue」という単語を含む行をスキップします。次に、数字で始まり「w」を含む 5 行をスキップします。この方法は、残基のある行をスキップするだけであるかのように機能し、その後の数字で始まる最初の行から印刷されます。私の「w」が考慮されていない理由を知っていますか。
#!/usr/bin/awk -f
BEGIN {
line = 0;
skipW = 0;
}
# Ignore all lines beginning with a number until I find one I'm interested in.
/^[0-9]+ residue/ { next }
# Ignore the first five lines beginning with a number followed by a 'w'.
/^[0-9]+ w/ {
skipW += 1;
if (skipW <= 5) next
}
# For all other lines beginning with a number, perform the following. If we are
# "printing", increment the line count. When we've printed 50 lines turn off
# printing from that point on.
/^[0-9]+/ {
++line
if ((line > 0) && (line <= 50)) print $6
}