在没有模式匹配的情况下没有输出

时间:2018-01-21 07:28:52

标签: linux sed

我希望sed给我一个单行输出,无论匹配模式是否被找到和替换,或者即使没有模式匹配,也使用相同的命令选项。

1. echo "700K" | sed -n 's/[A-Z]//gp'    // gives one output

2. echo "700" | sed -n 's/[A-Z]//gp'    // no output

在sed中是否有任何方法我可以获得第二种情况的单个输出而不删除" -n"选项,强制它打印输入而不管是否进行替换?

2 个答案:

答案 0 :(得分:2)

我不清楚为什么你需要保留-n选项,但如果你真的需要保留它,你可以使用以下sed命令:

echo "700" | sed -n 's/[A-Z]//g;p'

这将首先进行替换,如果可能,然后打印该行。

<强>输出:

enter image description here

答案 1 :(得分:1)

你不需要搞乱所有这些sed选项。使用sed中最简单的格式,如果找到模式将进行替换:

$ echo "700K" | sed 's/[A-Z]//g'
700
$ echo "700" | sed 's/[A-Z]//g'
700

$ sed --version
sed (GNU sed) 4.4

$ sed 's/[A-Z]//g' <<<$'700\n700K\n500\n3500A'
700
700
500
3500