2012-10-18 36 views

回答

2

一個的許多方面。如果第一個字段不包含@,請將其打印出來。

awk '$1 !~ /@/ { print $1; }' infile 
+0

非常有幫助,謝謝。 –

0

要跳過以空格開始,所有線路,併爲剩餘的文件空間之後刪除一切,做

grep -v '^ ' file.in | sed "s/ .*//" 

相比AWK,您需要啓動兩個進程,所做的事情要清楚得多。

另一種解決方案,僅sed

sed "/^ /d;s/ .*//" file.in 

不清晰,但只有一個過程。第一個sed命令(/^ /d)刪除所有以空格開頭的行;第二個命令與上面相同。

+0

爲什麼awk不清楚?就我個人而言,我認爲這是另一種方式,在'sed'和'grep'中你需要記住所有的標誌,而'awk'可以用簡單的通用操作符來完成。 – Bernhard

+0

是的,但是當我有多個類似的條目,我得到許多新的行簡單輸出sed後:

q9I6OEFg003411 q9IBZWhC012017 q9IBZRsb011962

+0

@Bernhard:好吧,每個人都有一個最愛。我特別不喜歡awk,儘管在學習perl之前我一直在使用它。 – January

2

您可以檢查@人物的存在或基於它存在於這種命令字段#:

awk 'NF > 5 { print $1 }' input.file 
0

如果它總是第一個字,等多條線路與空白使用前綴:

<infile grep -Eo '^[^[:blank:]]+' 
相關問題