在bash脚本中sed输出空白

时间:2013-08-12 18:39:30

标签: bash sed

我有一个文件,除了其他数据外还包含以下几百行

(abc-wxyz1/2222 1234)

1234是一个随机数,对于所有100行是不同的。我想用

替换所有行
(abc-wxyz1/2222 *)

我正在使用以下代码

 cat input.txt | \
     sed -i -e 's/\(abc\-wxyz1\/2222\ [0-9]\+\)/\(abc\-wxyz1\/2222\ \*\)/g' > output.txt

我得到output.txt空白我不知道为什么。我这样做了吗?

3 个答案:

答案 0 :(得分:1)

对于您展示的输入样本,您可以使用awk

awk '{print $1 " *)"}' input.txt

答案 1 :(得分:0)

如果您要使用标记-i, --in place,则不必重定向输出。正如预期的那样,替换就地执行

然而,你可以简化你的表达,做:

sed -i -e 's/abc\-wxyz1\/2222\ \([0-9]\+\)/*/g' input.txt

答案 2 :(得分:0)

使用此命令查看过滤器的结果:

cat input.txt | sed 's/\(abc\-wxyz1\/2222\ [0-9]\+\)/\(abc\-wxyz1\/2222\ \*\)/g' 

尝试使用较短的图案来破坏它所在的位置。

如果您要运行其他命令,则只需要'-e'标志。你也可以这样做:

sed 'command;command2;{command3}'