在同一表达式端使用sed参数\1、\2
我有一个文本文件,其中包含以下格式的许多等式:在同一表达式端使用sed参数\1、\2,sed,Sed,我有一个文本文件,其中包含以下格式的许多等式: somePtrName->ARRAY[0] == somePtrName->ARRAY[0] 每当指针名称相同时,我想使用sed替换该行并改为写入true。我试过下面的食谱, 但它不起作用: $ sed 's/[^=]* == \1/true/' input.txt 我得到: sed: -e expression #1, char 19: Invalid back reference 也许我太天真了,不相信我可以在定义的同一面中使
somePtrName->ARRAY[0] == somePtrName->ARRAY[0]
每当指针名称相同时,我想使用sed
替换该行并改为写入true
。我试过下面的食谱,
但它不起作用:
$ sed 's/[^=]* == \1/true/' input.txt
我得到:
sed: -e expression #1, char 19: Invalid back reference
也许我太天真了,不相信我可以在定义的同一面中使用
\1
。您需要首先通过在用于捕获的模式周围添加括号来捕获字符,然后只有您可以反向引用它
sed 's/\([^=]*\) == \1/true/' input.txt
或
sed's/\([^=]\+\)==\1/true/'请尝试以下内容,如果您同意,这在awk
中应该很容易
awk -F'->| ' '$1==$4{print "true"}' Input_file
可能是因为它被要求使用sed
。但否决投票的用户应该写下原因。给了你+1,所以你又在0上:)@Jotne,谢谢你,伙计:)
awk -F'->| ' '$1==$4{print "true"}' Input_file