1

我有一个文件,其中包含以下一百行以及其他数据

(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 空白我不知道为什么。我做得对吗?

4

3 回答 3

1

对于您显示的输入示例,您可以使用awk

awk '{print $1 " *)"}' input.txt
于 2013-08-12T18:48:22.923 回答
0

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

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

sed -i -e 's/abc\-wxyz1\/2222\ \([0-9]\+\)/*/g' input.txt
于 2013-08-12T18:41:09.967 回答
0

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

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

尝试使用较短的模式来排除故障的地方。

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

sed 'command;command2;{command3}'
于 2013-08-12T18:47:03.857 回答