比方說,我有一個看起來像這樣的文件:外殼腳本和正則表達式(?用sed,awk中,grep的...)
user ID time started time ended yes/no
3523 15:00 0 yes
2356 12:13 12:18 yes
4690 09:10 0 no
我想編寫shell腳本,將挑選出所有的 文件中的行結束時間爲'0'和'是'。
對於這個例子它會是僅在第一行:
3523 15:00 0 yes
比方說,我有一個看起來像這樣的文件:外殼腳本和正則表達式(?用sed,awk中,grep的...)
user ID time started time ended yes/no
3523 15:00 0 yes
2356 12:13 12:18 yes
4690 09:10 0 no
我想編寫shell腳本,將挑選出所有的 文件中的行結束時間爲'0'和'是'。
對於這個例子它會是僅在第一行:
3523 15:00 0 yes
awk '$3 == "0" && $4 == "yes" { print; }' myfile
grep -E '^[^ ]+ +[^ ]+ +0 +yes$' inputfile
或
grep -E '^([^ ]+ +){2}0 +yes$' inputfile
或
sed -n '/^\([^ ]\+ \+\)\{2\}0 \+yes$/p' inputfile
或
sed -nr '/^([^ ]+ +){2}0 +yes$/p' inputfile
這可能會爲你工作:
sed '/\s0\s\+yes\s*$/!d' inputfile
這將工作以及
grep '............................0........yes' myfile
哇,我沒有意識到這是多麼簡單做AWK。作爲打印聲明之前的一個問題,你是否必須寫END? – 2010-12-07 23:04:06
查看awk的手冊頁。一個awk腳本基本上是一個CONDITION ACTION對列表。在這種情況下,條件是$ 3 = 0和$ 4 = yes。相應的操作是打印。在讀取文件的最後一行之後END是一個條件。所以,之後的任何動作只會發生在文件末尾。此時,印刷品將不會顯示。在實踐中,其他子句將存儲全局變量的值以供END的操作使用。 – jtdubs 2010-12-07 23:13:39