我有一个包含以下行的日志文件
“ TSAGE_20160304193254_AAA_29792A_1103.tgz:二进制文件(标准输入)匹配”
我需要删除第一行到29792A以及之后的文本,这样文件看起来像这样:
29745gv92A
297342A
2934792A
29755692A
29778892A
答案 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