4

私はAWKを初めて使用します。

大きなテキストファイル(> 3GB)があります。AWK行コマンドを使用して、選択した行(行#62、#152、および153)をこの順序で抽出/印刷し、ファイルのレコードの終わりまで217行ごとに繰り返します。

ネットから検索して学ぼうとした。以下を試してみましたが、機能していないようですが、

awk '{(for (i=62; i<=NR; i=i+217)||for (i=62; i<=NR; i=i+217)||for (i=62; i<=NR; i=i+217)); print}' file.txt

count=62||152||153
awk '{if (++count%217==0) print;}' file.txt

私にいくつかの指針を与えるのを手伝ってくれるか、助けになるかもしれないウェブに私を導いてくれませんか。

私はこのhttp://www.catonmat.net/blog/wp-content/uploads/2008/09/awk1line.txtを使用して学習しています。

rgdsサラバナンK

アップデート#1-2012年9月21日-10.40pm

試してみました

awk 'NR == 62 || NR == 152 || NR == 153 || NR % 217 == 0 {print $0;}' file.txt

行#62、#152、および#153を印刷できますが、次のすべての反復(#(62 + 217)、#(152 + 217)、#(153 + 217)など)を印刷できるわけではありません。

以下も試してみましたが、うまくいきません。

awk '(NR == 62 || NR == 152 || NR == 153) && (((NR-62) % 217==0) || ((NR-152) % 217 ==0)|| ((NR-153) % 217==0)) {print $0;}' file.txt

アップデート#2-2012年9月21日-10.55pm-終了

rmunozのアイデアを微調整してみました。それは魔法のように機能しました。rmunozをありがとう、これで私はこのトピックを閉じます

awk '(NR - 62) % 217 == 0 || (NR - 152) % 217 == 0 || (NR - 153) % 217 ==0 {print $0;}' file.txt
4

1 に答える 1

5

AWKでは次のようにパターンを使用できます。

 awk 'NR == 62 || NR == 152 || NR == 153 || NR % (62+217) == 0 || NR % (152+217) == 0 || NR % (153+217) == 0 {print $0;}' test.txt
于 2012-09-21T21:28:39.820 に答える