繁体   English   中英

sed从文件中删除文本

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM