尝试替换以“\ n”换行符结尾的特定模式,但似乎找不到它。但是我需要能够将结果传递给另一个命令,并且它不在文件中。sed命令替换模式&( n)不起作用终端
例子:
$echo "test
some text testing
test
some text testing
test" | sed 's/ testing\n/|/g' | (more commands)
预期的结果将是:
test
some text|test
some text|test
尝试替换以“\ n”换行符结尾的特定模式,但似乎找不到它。但是我需要能够将结果传递给另一个命令,并且它不在文件中。sed命令替换模式&( n)不起作用终端
例子:
$echo "test
some text testing
test
some text testing
test" | sed 's/ testing\n/|/g' | (more commands)
预期的结果将是:
test
some text|test
some text|test
echo "test
some text testing
test
some text testing
test" | sed '/testing/{N;s/ testing\n/|/;}'
我们期待在我们的模式空间匹配/testing/
线和追加使用N
下一行模式空间。这两条线由\n
分隔。然后,我们继续进行简单替换,即删除testing\n
并用|
替换它。
:在替换命令'不良标识:“}”' – 2014-09-24 04:53:11
@double_j看起来,你是在Mac上。在'}'之前放置';'。 'sed'/ testing/{N; s/testing \ n */|/g;}''。 BSD'sed'在'}'前面需要';'。 – 2014-09-24 04:55:45
@double_j上面的代码适用于我,我只是复制并粘贴到终端, – Ram 2014-09-24 04:56:39
如果您愿意接受其他建议,可以使用Perl一行代码来使用您的模式。
$ echo "test
> some text testing
> test
> some text testing
> test" | perl -pe 's/ testing\n/|/g'
test
some text|test
some text|test
我用@ram回答,因为他仍在使用'sed',但我也喜欢这种方法,并可能在别处使用它,谢谢! – 2014-09-24 05:05:49
这是获得一个错误尝试的是... sed的用于多任务.. – Ram 2014-09-24 04:41:15