我想它来检测FILE_1以下模式的sed:使用正则表达式
STRING_1 : "STRING_2"
并追加STRING_2至FILE_2
这就是我现在所拥有的:
sed 's/STRING_1\s*:\s*"\([^"]*\)"/\1/g' FILE_1 >> FILE_2;
但这不起作用,它会向FILE_2附加大量随机内容(不应该匹配)。不知道我做错了什么......
我想它来检测FILE_1以下模式的sed:使用正则表达式
STRING_1 : "STRING_2"
并追加STRING_2至FILE_2
这就是我现在所拥有的:
sed 's/STRING_1\s*:\s*"\([^"]*\)"/\1/g' FILE_1 >> FILE_2;
但这不起作用,它会向FILE_2附加大量随机内容(不应该匹配)。不知道我做错了什么......
有点冒险回答改变问题规范,但...
perl -ne 'print "$1\n" if (/.*STRING_1\s*:\s*\"([^"]*)\".*/)' FILE_1 >> FILE_2
似乎做工精细
如果STRING_1
之前的文字和STRING_2
后,它会不会与当前的正则表达式删除,因此将获得附加到FILE_2
。
为了解决这个问题,在开始和你目前的图案的末尾添加.*
:
sed 's/.*STRING_1\s*:\s*"\([^"]*\)".*/\1/g' FILE_1 >> FILE_2;
^^ ^^
这意味着你的正则表达式不起作用。给我们一些你输入的样本。 – codaddict 2010-12-11 03:31:48
将其改为:
sed 's/.*STRING_1\s*:\s*"\([^"]*\)".*/\1/g' FILE_1 >> FILE_2;
,但它仍然附加整个文件,而不是正则表达式匹配
使用sed -n
如果你不想sed
输出都默认为每一行和p
修改打印匹配的结果。
sed -n -e 's/foo/bar/gp' FILE_1 >> FILE_2
你可以给出一个输入例子,它失败了吗? – codaddict 2010-12-11 02:45:58