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 个字符串,因此请记住 </code> 以获得第二个。<br> 与反斜杠一起,您将拥有</p> <pre><code>sed 's/^\([^_]*_\)\{3\}\([^_]*\).*//' logfile

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

也许这可行:

awk -F_ '{print }' file
29792A