2016-03-05 62 views
1

我有以下行SED从文件

日志文件中删除文本“TSAGE_20160304193254_AAA_29792A_1103.tgz:二进制文件(标准输入)匹配

我需要删除第一行高达29792A和之后的文本,文件看起来就像这样:

29745gv92A 
297342A 
2934792A 
29755692A 
29778892A 
+0

你尝试像'切-d “ - ” -f4'? –

+0

我不知道如何使用切割。我使用它与sed? – Rich

+0

请澄清的问题,并提供输入,预期的输出,并且您已经尝试了代码的简约例子。 – peak

回答

0

您可以使用切让像_分隔符之间的东西。
当你想将其重定向到另一个文件,使用

cut -d"_" -f4 logfile > otherfile 

你可以做这样的事情与sed,但你需要告诉sed的,它会跳过模式[^_]*_(字符除了重复下划线0或更多次),然后是下划线)。你要跳过这个(模式){3}从^开始行的时间。
你匹配([^_]*)第二个字符串是你想要的部分。 .*是该行的其余部分,并且是垃圾。
sed的第一部分将有2串记起来了,所以记得\2获得第二。你会加上反斜杠

sed 's/^\([^_]*_\)\{3\}\([^_]*\).*/\2/' logfile 

我没有测试sed命令时,cut更好。

+0

谢谢你得到了与剪切命令工作 – Rich

0

Perhap这可能工作:

awk -F_ '{print $4}' file 
29792A