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
我有一个包含以下行的日志文件
"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