タグ付けされた質問 「gawk」

1
gawkとawkの違い
2つの関数gawkとawkの違いを理解しようとしていますか?gawk vs awkはいつ使用しますか?それとも、使用方法の面で同じですか? また、例を挙げることができますか?
50 awk  gawk 

3
awkを使用してテキストファイルの最初の6行/行をスキップする
テキストファイル(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 . . .
39 awk  gawk 

2
gawkインプレースとstdout
gawkの-i inplaceオプションを使用して印刷することは可能stdoutですか? たとえば、ファイルを更新したい場合で、変更がある場合は、ファイルの名前と変更された行を出力stderrして、次のようにします。 find -type f -name 'myfiles' -exec gawk -i inplace '{if(gsub(/pat/, "repl")) { print FILENAME > "/proc/self/fd/2" ; print > "/proc/self/fd/2"; } print;}' {} + しかしstdout、代わりに使用する方法、またはそのブロックを代替ストリームに出力するよりクリーンな方法はありますか?
10 awk  gawk 

4
awkは一度に複数の変数に割り当てます
私は文字列から2つの数値を引き出し、それらを使用して変数に割り当てようとしていますawk(gawk私が特に使用しているものです)。tmuxバージョン文字列からメジャーバージョン番号とマイナーバージョン番号をawk変数に取り出したい: 入力:tmux 2.8; maj == 2そしてmin == 8 入力:tmux 1.9a; maj == 1そしてmin == 9 入力:tmux 2.10; maj == 2そしてmin == 10 私の入力がtmux -Vstdin からのものであると仮定すると、私は現在次のものを持っています: tmux -V | awk '{ maj = +gensub(/([0-9]+)\..*/, "\\1", "g", $2); min = +gensub(/.*\.([0-9]+).*/, "\\1", "g", $2); # ...do something with maj and min... }' …
9 awk  gawk 

1
trueおよびfalseのawk条件
を使用した場合awk 0 inputfile、何も出力されない原因に遭遇しました0。これは、条件が偽であることを意味します。 を使用するとawk 1 inputfile、1awkが解釈する各行について、すべてを平均として印刷します。 を使用するとawk any_string inputfile、すべてのawk変数がゼロとして初期化されるためfalseになるため、何も出力されません。 しかし、を使用awk any_integer inputfileすると、trueになり、ファイルの各行を出力します。理由は何でしょうか? これについては、GNU awkマニュアルで説明されていますが見つかりません。
9 awk  gawk 

2
awkを使用した3つのファイルの処理
以下のファイルを検討してください。 file1: boo,8,1024 foo,7,2048 file2: foo,0,24,154 noo,0,10,561 file3: 24,154,7,1024,0 私が必要なのは、File1に移動して、次のことを確認することです$2==7。trueの場合、取る$1、$2と$3からファイル1。ここで$1、File1とFile2が等しいかどうかを比較する必要$1があります。trueの場合、私が取らなければならない$3と$4のFile2の中に存在していないこれはFile1、その後、私が行かなければならないFILE3とかどうかを確認$1からFILE3することに等しい$3からFile2の、そして$2からFILE3に等しい$4からFile2の。はいの場合$2、File1からかどうかを確認する必要があります等しい$3からFILE3、この条件が真であるならば、私は比較する必要が$3からはFile1と$4からFILE3場合は、$3からファイル1以上である$4から、FILE3。 次のスクリプトを試しました。 cat [file1] [file2] [file3] | awk -F, '{if(NF==3) {if($2==7){a[$1]=$1; b[$1]=$2; c[$1]=$3} }else {if(NF==4){if(a[$1]==$1){d[$3]=$3; e[$4]=$4} }else {if(NF==5){if(d[$1]==$1 && e[$2]==$2){print a[$1], b[$1], c[$1], d[$1]}} } } }' 望ましい出力は次のとおりです。 foo,7,2048,24,154,1024
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.