2017-08-13 179 views
-1

我剛開始學習awk編程,並且仍然習慣在bash終端中使用它。如果我是寫一個表達式匹配的字符串結束開始,我想知道它是如何去?匹配開始和結束字符的字符串

想的是一樣的東西:

echo -e "deed\ndeath\ndone\ndeindustrialized" |awk '/^de.ed$/' 

在那裏我開始匹配,並且匹配awk命令結束,但它並沒有打印出任何東西。我會感謝一些幫助。

應該產生:

deed 
deindustrialized 

我剛開始今天想知道。

+0

'echo「死亡蘆葦的輸出」| awk'script''應該是什麼? 「回聲」如何喂飼料「| awk'script'''?換句話說,你是否試圖匹配以'de'開始並以'ed'結尾的單詞,或者完成那些或僅包含de的行,或者以de開頭並以ed結尾或其他內容的行?真的想想你真的想要匹配什麼,然後創建不僅與它應該匹配的樣本輸入/輸出,而且更重要的是(它更難編碼)在不匹配時不匹配。 –

回答

2

awk的部分應該是:

... | awk '/^de.*ed$/' 
deed 
deindustrialized 

.匹配任何字符和*意味着前面的項將被匹配的零個或更多次。

+0

感謝您的解釋!但是,我有產出契約,但不是非工業化的。 – Electric

+0

你的文件可能有窗口行結尾,即。 '\ r \ n'表示最後一個字符實際上是'\ r'。這是否工作:'awk'/^de.*ed\r?$ /'' –

+0

我真的只寫了_file_?哦,親愛的... –

1

嘗試使用awk:

echo -e "deed\ndeath\ndone\ndeindustrialized" | awk 'NR==1;END{print}' 

以下是解釋過的一樣。

awk ' 
NR==1;  ###Checking the NR(Number of line) value is 1, if yes then print the current line(awk works on method of pattern/action, if a condition is TRUE then do actions, in case of NO action do default action which is print of current line). 
END{print}' ###In END section now, so it will print the last line of Input_file. 
+0

很酷。但是NR代表什麼呢?也會喜歡一些解釋。 – Electric

+0

完成後,請立即檢查我的更新。 – RavinderSingh13

+1

太棒了!將在未來有用! – Electric

相關問題