Bash Sed从文件中删除文本
我有一个包含以下行的日志文件 “TSAGE_20160304193254_AAA_29792A_1103.tgz:二进制文件(标准输入)匹配” 我需要删除到29792A的第一行以及之后的文本,因此文件看起来如下所示:Bash Sed从文件中删除文本,bash,awk,sed,mv,Bash,Awk,Sed,Mv,我有一个包含以下行的日志文件 “TSAGE_20160304193254_AAA_29792A_1103.tgz:二进制文件(标准输入)匹配” 我需要删除到29792A的第一行以及之后的文本,因此文件看起来如下所示: 29745gv92A 297342A 2934792A 29755692A 29778892A 您可以使用cut在分隔符之间获取一些内容,如\uuu 如果要将其重定向到另一个文件,请使用 cut -d"_" -f4 logfile > otherfile 您可以使用sed
29745gv92A
297342A
2934792A
29755692A
29778892A
您可以使用cut在分隔符之间获取一些内容,如
\uuu
如果要将其重定向到另一个文件,请使用
cut -d"_" -f4 logfile > otherfile
您可以使用sed
执行类似的操作,但是您需要告诉sed它必须跳过模式[^\u]*.
(除了下划线重复0次或更多次之外的字符),后跟下划线)。您必须从行的开头跳过此(模式){3}次。您匹配的第二个字符串是您想要的部分。
*
是行的其余部分,是垃圾。sed的第一部分将记住2个字符串,因此调用
\2
以获取第二部分。加上反斜杠,你会
sed 's/^\([^_]*_\)\{3\}\([^_]*\).*/\2/' logfile
我没有测试
sed
命令,而cut
更好。您可以使用cut在分隔符之间获取一些东西,比如\uu
如果要将其重定向到另一个文件,请使用
cut -d"_" -f4 logfile > otherfile
您可以使用sed
执行类似的操作,但是您需要告诉sed它必须跳过模式[^\u]*.
(除了下划线重复0次或更多次之外的字符),后跟下划线)。您必须从行的开头跳过此(模式){3}次。您匹配的第二个字符串是您想要的部分。
*
是行的其余部分,是垃圾。sed的第一部分将记住2个字符串,因此调用
\2
以获取第二部分。加上反斜杠,你会
sed 's/^\([^_]*_\)\{3\}\([^_]*\).*/\2/' logfile
我没有测试
sed
命令,cut
更好。也许这可能会起作用:
awk -F_ '{print $4}' file
29792A
也许这会起作用:
awk -F_ '{print $4}' file
29792A
你试过像
cut-d“-”f4这样的东西吗?我不知道如何使用cut。我是否在sed中使用它?请澄清这个问题,并提供一个输入、预期输出和您尝试过的代码的最低限度示例。您是否尝试过类似于cut-d“--f4
?我不知道如何使用cut。我是否在sed中使用它?请澄清这个问题,并提供一个输入、预期输出和您尝试过的代码的最低限度示例。