[英]Sed removing text from a File
我有一个包含以下内容的日志文件
“ TSAGE_20160304193254_AAA_29792A_1103.tgz:二进制文件(标准输入)匹配 ”
我需要删除高达29792A的行的第一行,然后删除文本,因此文件如下所示:
29745gv92A
297342A
2934792A
29755692A
29778892A
您可以使用cut在定界符之间获取某些内容,例如_
。
当您要将其重定向到另一个文件时,请使用
cut -d"_" -f4 logfile > otherfile
您可以使用sed
类似的操作,但是您需要告诉sed,它必须跳过模式[^_]*_
(除下划线以外的字符重复0次或多次),后跟下划线。 您必须从行的^
开头跳过{3}次(模式)。
您要匹配的第二个字符串([^_]*)
是您想要的部分。 .*
是该行的其余部分,是垃圾。
sed的第一部分将记住2个字符串,因此请调用\\2
以获得第二个字符串。
加上反斜杠,您将拥有
sed 's/^\([^_]*_\)\{3\}\([^_]*\).*/\2/' logfile
我没有测试sed
命令, cut
效果更好。
也许这可能有效:
awk -F_ '{print $4}' file
29792A
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.