Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/24.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
Linux 使用';sed';或其他类似命令来捕获组,然后仅输出该数据_Linux_Bash_Sed_Awk - Fatal编程技术网

Linux 使用';sed';或其他类似命令来捕获组,然后仅输出该数据

Linux 使用';sed';或其他类似命令来捕获组,然后仅输出该数据,linux,bash,sed,awk,Linux,Bash,Sed,Awk,我有一个如下所示的日志文件: sdfsdf sdfsdf<Pay>1234</Pay> sdfsdfsdf sdfsdf<Pay>12342323</Pay> sdfsdfsdf sdfsdf 我正在考虑使用“sed”,并有以下行: sed 's/<Pay>(*)<\/Pay>/\1/g' abc.txt sed's/(*)/\1/g'abc.txt 但我得到了一个错误: sed:-e表达式#1,字符22:'s

我有一个如下所示的日志文件:

 sdfsdf
 sdfsdf<Pay>1234</Pay> sdfsdfsdf
 sdfsdf<Pay>12342323</Pay> sdfsdfsdf
 sdfsdf
我正在考虑使用“sed”,并有以下行:

sed 's/<Pay>(*)<\/Pay>/\1/g' abc.txt
sed's/(*)/\1/g'abc.txt
但我得到了一个错误:

sed:-e表达式#1,字符22:'s'命令的RHS上的引用无效\1

我怎样才能达到预期的输出

这是Ubuntu Linux的最新版本,bash。

sed-n的/*\(.*\)./\1/p'文件
sed -n 's/.*<Pay>\(.*\)<\/Pay>.*/\1/p' file
sed-n的/*\(.*\)./\1/p文件

sed
与Perl相反,它的捕获括号需要转义:
\(.*)


如果要获得预期的输出,则需要去掉该行的其余部分。只需将其包含在模式中。

sed
,与Perl相反,它的捕获括号需要转义:
\(.*)


如果要获得预期的输出,则需要去掉该行的其余部分。只需将其包含在模式中。

grep-o的完美案例:

grep -oP '(?<=<Pay>).+?(?=</Pay>)'

grep-oP'(?grep-o的完美案例

grep -oP '(?<=<Pay>).+?(?=</Pay>)'
grep-oP'(?使用
awk
(由于RS中的正则表达式,仅
gawk
mawk

awk'NR%2==0'RS=”“文件
1234
12342323
使用
awk
(由于RS中的正则表达式,仅
gawk
mawk

awk'NR%2==0'RS=”“文件
1234
12342323

如果每行有多个Pay,则
不起作用,但适用于给定的输入。正确。对于与发布的输入不同的其他输入,例如
在不同的行上,或
接受参数,如
,或…不起作用,如果有多个Pay每行,但适用于给定的输入。正确。它不适用于与发布的输入不同的其他输入,例如
在不同的行上,或
使用参数,如
或。。。。
awk 'NR%2==0' RS="</?Pay>" file
1234
12342323