
nohupで実行させたバックグラウンドジョブ終了時にメールで通知させる
ふと、nohupでバックグラウ…
awkで指定したキーワードを持ってる列のみを抽出する場合、以下のようにコマンドを実行する。
awk '{for(i=1;i<=NF;i++)if(match($i,"キーワード")) print $i}'
[root@BS-PUB-CENT7-01 ~]# cat /tmp/test.txt aaa="1" bbb="2" ccc="3" ddd="4" aaa="11" bbb="21" ccc="31" ddd="41" aaa="12" bbb="22" ccc="32" ddd="42" aaa="13" bbb="23" ccc="33" ddd="43" aaa="14" bbb="24" ccc="34" ddd="44" aaa="15" bbb="25" ccc="35" ddd="45" aaa="16" bbb="26" ccc="36" ddd="46" aaa="17" bbb="27" ccc="37" ddd="47" aaa="18" bbb="28" ccc="38" ddd="48" [root@BS-PUB-CENT7-01 ~]# awk '{for(i=1;i<=NF;i++)if(match($i,"bbb")) print $i}' /tmp/test.txt bbb="2" bbb="21" bbb="22" bbb="23" bbb="24" bbb="25" bbb="26" bbb="27" bbb="28"
指定したいパターンが複数ある場合は、以下のようにコマンドを実行することで(複数行に分かれるけど)抽出することができる。
awk '{for(i=1;i<=NF;i++)if(match($i,"キーワード1|キーワード2")) print $i}'
[root@BS-PUB-CENT7-01 ~]# cat /tmp/test.txt aaa="1" bbb="2" ccc="3" ddd="4" aaa="11" bbb="21" ccc="31" ddd="41" aaa="12" bbb="22" ccc="32" ddd="42" aaa="13" bbb="23" ccc="33" ddd="43" aaa="14" bbb="24" ccc="34" ddd="44" aaa="15" bbb="25" ccc="35" ddd="45" aaa="16" bbb="26" ccc="36" ddd="46" aaa="17" bbb="27" ccc="37" ddd="47" aaa="18" bbb="28" ccc="38" ddd="48" [root@BS-PUB-CENT7-01 ~]# awk '{for(i=1;i<=NF;i++)if(match($i,"bbb|ccc")){print $i}}' /tmp/test.txt bbb="2" ccc="3" bbb="21" ccc="31" bbb="22" ccc="32" bbb="23" ccc="33" bbb="24" ccc="34" bbb="25" ccc="35" bbb="26" ccc="36" bbb="27" ccc="37" bbb="28" ccc="38"
もし同じ行の内容は一行で出力したい場合は、ちょっと汚いけど以下のように書くとよいだろう。
awk '{for(i=1;i<=NF;i++)if(match($i,"キーワード1|キーワード2")){k=k" "$i}if(i=NF)print gensub("^ ","",1,k);k=""}'
[root@BS-PUB-CENT7-01 ~]# cat /tmp/test.txt aaa="1" bbb="2" ccc="3" ddd="4" aaa="11" bbb="21" ccc="31" ddd="41" aaa="12" bbb="22" ccc="32" bbb="3rqt" ddd="42" aaa="13" bbb="23" ccc="33" ddd="43" aaa="14" bbb="24" ccc="34" ddd="44" aaa="15" bbb="25" ccc="35" ddd="45" aaa="16" bbb="26" ccc="36" ddd="46" aaa="17" bbb="27" ccc="37" ddd="47" aaa="18" bbb="28" ccc="38" ddd="48" [root@BS-PUB-CENT7-01 ~]# awk '{for(i=1;i<=NF;i++)if(match($i,"bbb|ccc")){k=k" "$i}if(i=NF)print gensub("^ ","",1,k);k=""}' /tmp/test.txt bbb="2" ccc="3" bbb="21" ccc="31" bbb="22" ccc="32" bbb="3rqt" bbb="23" ccc="33" bbb="24" ccc="34" bbb="25" ccc="35" bbb="26" ccc="36" bbb="27" ccc="37" bbb="28" ccc="38"