我有以下行SED从文件
日志文件中删除文本“TSAGE_20160304193254_AAA_29792A_1103.tgz:二进制文件(标准输入)匹配”
我需要删除第一行高达29792A和之后的文本,文件看起来就像这样:
29745gv92A
297342A
2934792A
29755692A
29778892A
我有以下行SED从文件
日志文件中删除文本“TSAGE_20160304193254_AAA_29792A_1103.tgz:二进制文件(标准输入)匹配”
我需要删除第一行高达29792A和之后的文本,文件看起来就像这样:
29745gv92A
297342A
2934792A
29755692A
29778892A
您可以使用切让像_
分隔符之间的东西。
当你想将其重定向到另一个文件,使用
cut -d"_" -f4 logfile > otherfile
你可以做这样的事情与sed
,但你需要告诉sed的,它会跳过模式[^_]*_
(字符除了重复下划线0或更多次),然后是下划线)。你要跳过这个(模式){3}从^
开始行的时间。
你匹配([^_]*)
第二个字符串是你想要的部分。 .*
是该行的其余部分,并且是垃圾。
sed的第一部分将有2串记起来了,所以记得\2
获得第二。你会加上反斜杠
有
sed 's/^\([^_]*_\)\{3\}\([^_]*\).*/\2/' logfile
我没有测试sed
命令时,cut
更好。
谢谢你得到了与剪切命令工作 – Rich
Perhap这可能工作:
awk -F_ '{print $4}' file
29792A
你尝试像'切-d “ - ” -f4'? –
我不知道如何使用切割。我使用它与sed? – Rich
请澄清的问题,并提供输入,预期的输出,并且您已经尝试了代码的简约例子。 – peak