Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Bash Sed从文件中删除文本_Bash_Awk_Sed_Mv - Fatal编程技术网

Bash Sed从文件中删除文本

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

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

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

我需要删除到29792A的第一行以及之后的文本,因此文件看起来如下所示:

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中使用它?请澄清这个问题,并提供一个输入、预期输出和您尝试过的代码的最低限度示例。