2017-11-01 9 views
1

AWKの印刷、1偽のように見えるファイルで複数の行があり

/A\tB/ 

:そして、私はこのREを含むすべての行を印刷したい

A B C H 
A B C D 

は、行が含まれており、第4フィールドのH、印刷されない場合でも、出力は次のようになります。

A B C D 

これはsed、awk、grepのいずれかの行に書くことができますか?私が知っている

唯一のものは、次のとおりです。

awk '/^A\tB/' 

答えて

2

AWKワンライナー:

awk -F'\t' '$1=="A" && $2=="B" && $4!="H"' file 
  • -F'\t' - チャー\tフィールドセパレータとして扱われるタブ

出力:

A B C D 
1

使用本。で

awk '/^A\tB/ { if ($4 != "H") print }' 
+0

タイプミス、 ''最後の後でなければなりません '}' ...簡素化し、2列目 'awkのためのより強固なマッチング行うことができる '/^A \ tBの\トンを/ && $ 4!= "H" ' – Sundeep

+0

@Sundeep Ok.Thanks –

4

これは動作します:

awk '$1$2 == "AB" && $4 != "H"' file 

をすべてのエントリは、単一の文字である場合にはこれも動作します。

awk '$1$2$3$4 ~ /^AB.[^H]/' file 
2

これはあなたのための(GNU SEDを)うまくいくかもしれない:

sed '/^A\tB\t.\t[^H]/!d' file 

の場合行にAB、タブで区切られた任意の文字と文字(H以外)が含まれていません。 それ。

を書くことでした:

sed -n '/^A\tB\t.\t[^H]/p' file