2017-08-13 121 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

相关问题