awk getlineはファイルの最初の3行を表示します。

awk getlineはファイルの最初の3行を表示します。

私はそれを使用しています

awk 'BEGIN {while((getline gf < "awk.script") > 0) {print gf}}' 

このパターンの最初の3行を読んでください。 。使用できますが、 head -3 2つのファイル間で行を切り替える必要があるため、そうしたくありません。

awk.scriptに次のものが含まれているとします。

line 1
line 2
line 3 <------- until here
line 4 

これで元のcmdを更新しようとしています

 awk 'BEGIN {while((getline gf < "awk.script") > 0) && f{print $gf;f=0};NR<=3{f=1}}'

このコードはリンクに提供されている例の影響を受けます。 https://stackoverflow.com/questions/17908555/printing-with-sed-or-awk-a-line-following-a-matching-pattern

私が得るエラーは次のとおりです。

awk: cmd. line:1: BEGIN {while((getline gf < "awk.script") > 0) f{print $gf;f=0};NR<=3{f=1}}
awk: cmd. line:1:                                                ^ syntax error
awk: cmd. line:1: BEGIN {while((getline gf < "awk.script") > 0) f{print $gf;f=0};NR<=3{f=1}}
awk: cmd. line:1:

どうすればいいですか?ありがとう

ベストアンサー1

getlineを使用する必要はありませんが、これが必要な場合:

echo|awk 'BEGIN {while((getline gf < "awk.script") > 0) {print gf; if(++i > 2) break;}}'

次のような同じ動作が表示されることがあります。

awk 'NR>3{exit} {print $0}' input.txt

試みには2つの問題があります。 NRは増加せず、getline句と対応するコードブロックの間にand演算子を使用しないでください。あなたの検査は不適切に見えます。&&whilef

おすすめ記事