Netnews

マッチしたパターンの後のユニークなもの

print unique ocurrences after matching pattern 入力ファイルが、 str1 str2 str3 str4 err003 str5 str...N str1 str2 str3 str4 str5 err002 str5 str...N str1 str2 err003 str3 str...N str1 str2 str3 err002 str4 str...Nのようなものの時に、/err[1…

最後の 5 行の表示 (続き)

Print last 5 lines そのあと、awk 単独でのものもいくつか紹介されています。 { line[0 + n] = $0; n = f(n + 1) } END { print line[n]; stop = f(n) for (i = f(n + 6); i != stop; i = f(i + 1)) print line[i] } function f(n) { return int(n % 11) } …

uptime の出力を使う

Return just the text I want from "uptime" 以下のような uptime コマンドの出力を使います。 18:01:04 up 1 min, 0 users, load average: 0.55, 0.28, 0.10 22:14:47 up 1:01, 0 users, load average: 0.21, 0.05, 0.02 17:58:52 up 1 day, 2:34, 0 users,…

文字の左右の空白の削除

removing leading character from left,right a string 以下のようなものがうまく動作しないと言っていますが、Ed Morton が回答しています。(表示できない文字があったので、少し直しています) name = " o " #line 5 for (ix1=1;ix1<2;ix1++) getline ; nam…

連想配列のソート (続き)

Sorting associative arrays Ed Morton がまともなことを書いているので、続きを載せておきます。要するに for ... in ... で呼び出さずに普通の for で呼び出せば良いわけです。 function prtSorted(a, min,max,i) { min = max = 0 for (i in a) { min = (i …

連想配列のソート

Sorting associative arrays これは定石なのかもしれないけれど、裏技的なことも書かれています。Golf を awk でされている方は環境変数を export できればなぁと思っているのではないでしょうか。まぁ、ソースコードを読めば書かれているわけですが・・・。…

スクリプト中の変数の抜き出し

how to list all defined variables gawk には '--dump-variables' というオプションがありますが、これを使います。 クラシカルな awk は Ed Morton が書かれているように配列に格納して for 文で探す手段も有効ではないでしょうか。 ... { V["var1"] = 3; …

shell 変数の awk での使用

shell variable in awk これも定石と言うか FAQ に近い問題です。基本的には '-v' オプションで渡すのが簡単で間違いがありません。 #! /bin/bash pattern=$1 cat file.c | awk '{ if($0 ~ $pattern) print $0; }' というものが動作しないと言うことですが、…

最後の 2 行を出力する

Help to explain awk が苦手とする tail のようなものですが、awk で行う場合には定石があって、Janis Papanagnou も親切に回答しています。 { two_lines = saved_line "\n" $0 saved_line = $0 } END { print two_lines } { prev_line = curr_line curr_lin…

IP アドレスのみを抜き出す

To extract a substring between two different tokens. 入力が以下のような場合に、 UDP:[192.168.2.143]:6752次のような出力をさせるというものです。 192.168.2.143書かれてあるようにいくつかの手法がありますが、以下のような回答がありました。 awk "{…

空行の削除

Trying to remove blank lines 文字化けも手伝って、問題が分からないのですが、anarchy golf - delete blank lines のまんまです。なので、回答はここには載せませんが、見たい人は見てください。 anarchy golf - delete blank lines の 2 byte じゃないも…

フィールドを変更し行を挿入する

inserting extra line with modified fields 正直言って、やりたいことが良く分からないのですが、以下のような内容です。 まず、fileA があります。 1 a b c 2 e f g 3 i j k 4 m n oで、fileB があります。 1 q r s t 1 u v w x 2 y z a b 2 c d e f 3 g h…

HTML から URI を抜き出す

Getting URIs from HTML これは awk を使っている時に参考になる質問かな。 以下のような HTML の場合に拡張子が ext のものの URI を抜き出すというものです。 <html> <body> </body> </html> Tiago Peczenyj の回答が分かりやすいです。徐々に解読しているような方法です。 最初に R…

最初の行の文字を比較する

Compare a token from beginning of the line. 最初に 'india' というキーワードがあった場合に行を表示するというものです。以下のようなものを作成したけれど動作しないという内容です。 #! /bin/sh read line flag=awk /^india/ $line echo $flag #end 修…

最初の 0 を取り除く

an easy one $1 から $NF までの中の最初の '0' を取り除きたいというものです。また、awk だけでなく、grep, sed での解法もあれば教えて欲しいというものです。 いくつか回答が出ています。 sed 's/\s0\s/ /' youfile |<< >|awk| awk '$1=="0"{$1=""} 1' y…

単語の挿入

to insert a word after a particular token in the input line 初心者からの質問のようですが、以下のようなことをしたいようです。 Input Line: Shell scripting is a programming language output line: Shell scripting is a powerful programming langu…

テキストのパース

Help with text file parsing comp.lang.awk ではテキストファイルのパースとなっていますが、実際には面倒な問題です。 3 // Number of blocks five lines of text we don't care about 1 23.5 2 34.2 3 45.1 4 52.4 five lines of text we don't care abou…

変わった区切りを用いる

regex guru needed $NEEDLE$, $BIG_NEEDLE$, $REALLY_BIG_NEEDLE$ のような '$' にはさまれたものを RS としたいようなのですが、特例として $NEE=\r\nDLE$, $=\nNEEDLE$ のようなものも認めるというものです。以下のような回答が出ています。 awk -v RS='$'…

2 つのファイルを扱う方法

How-to use values from 2 input files 前日の2 つのファイルの比較 - 日本 GNU AWK ユーザー会 0.2からの続きです。 $ cat input1.txt data=23 data=33 data=4と $ cat input2.txt data=23 data=32 data=3という 2 つのファイルがあった際に、値を比較する…

gsub() を式として使う

なかなかダークな世界の話題です。 GSUB regex (everything before variable) 以下のファイルの <br><br>より前を抽出するという問題ですが、完全に gsub() / sub() の評価式問題に置き換わっています。 this is a message<br><br> ignore me this is also a message a littl…

2 つのファイルの比較

Another "How-to" use 2 input files into an awk program data.log が以下のようなもので、 John=0 Anna=2data1.log が以下のようなものの場合、 value=0 value=2 FS を '=' として $2 を比較する方法を問い合わせしているようですが、ここでは data.log の…

文字列マッチング

Google グループ "as" を含む行を出力するのに、 /as/ {print NR, $0} というものは出力されるが、 /^as$/ {print NR, $0} は何も表示されないという質問ですが、結果的に /^as$/ にマッチするものがないわけですが、comp.lang.awk ならではの回答が凄いです…

さまざまな処理を awk で行ってみる

Google グループ Go deh!: Wide Finder on the command lineの最初に書かれているようなパイプ処理を awk で組み込んでいった場合に、パフォーマンスがどのくらい向上するかについて試したもののようです。grep + awk + sort + uniq + sort -n + tail という…

runawk と派生 (2)

runawk と派生 - 日本 GNU AWK ユーザー会 0.2からの続きです。 Google グループ Wrapper for AWK providing modules download | SourceForge.net awkfe よりも runawk を使う理由を作者が挙げています。 awkfe にはメンテナーがいない どれが最新か分からな…

get arguments (2)

以下の続きです。 get arguments - 日本 GNU AWK ユーザー会 0.2 gawk であれば、getopt.awk というライブラリが含まれていて、コマンドラインオプションの処理に詳細が記述されています。 そこまで実用できな awk スクリプトがないためか、あまり getopt.awk…

get arguments

Google グループ awk スクリプトを実行可能なものにした時に引数を処理したいというものです。 ./test.awk file arg1のような場合に file は入力ファイルに arg1 は変数などで用いる引数として使いたいというものですが、ひとつの回答として -v で引数処理を…

gawk or Perl (2)

Google グループ 議論が面白い方向に進んでいますが、 Perl ist more powerful than gawk, as Java is more powerful than gawk, more libraries and more system interfaces. the one or other hybrid object oriented construct. Perl and gawk are typefr…

Adding prefixes

Adding prefixes bash の function で DOMAINS="abc.tld def.tld ghi.tld ..." という部分を DOMAINS="host.abc.tld host.def.tld host.ghi.tld ..." というものに置き換えたいと言うものです。いくつかの意見で shell の問題だから comp.lang.shell に質問…

Usage of gsub

Usage of gsub 厳密には gsub() の問題ではなく shell の問題になりますが、一行野郎で $ echo 'a,b,c,d,e' | gawk '{gsub(/\,/,"'&'",$0);print $0}' のようにしても a','b','c','d','eとならないというものです。 まさに「クォート地獄」なわけですが、回…

gawk or Perl

Google グループ 日本でこんな発言したら、釣りだと思われてしまうわけですが、平然と丁寧に答えているのが fj との違いかもしれません。(wxgawk の開発リーダーでもある Jürgen Kahrs はhttp://home.vrweb.de/~juergen.kahrs/で以下のように発言しているつ…