Sed从文件中删除文本

时间:2016-03-05 15:44:56

标签: bash awk sed mv

我有一个包含以下行的日志文件

TSAGE_20160304193254_AAA_29792A_1103.tgz:二进制文件(标准输入)匹配

我需要删除第一行到29792A以及之后的文本,这样文件看起来像这样:

29745gv92A
297342A
2934792A
29755692A
29778892A

2 个答案:

答案 0 :(得分:0)

您可以使用剪切功能在_之类的分隔符之间获取内容 如果要将其重定向到其他文件,请使用

cut -d"_" -f4 logfile > otherfile

您可以使用sed执行此类操作,但是您需要告诉sed它必须跳过模式[^_]*_(字符除了下划线重复0次或更多次)后跟下划线)。您必须从该行的^开头跳过此(模式){3}次 您匹配的第二个字符串([^_]*)是您想要的部分。 .*是该行的其余部分并且是垃圾 sed的第一部分将记住2个字符串,因此请回忆\2以获得第二个字符串 与反斜杠一起,你将有

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

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

答案 1 :(得分:0)

Perhap这可能有效:

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