我希望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"选项,强制它打印输入而不管是否进行替换?
答案 0 :(得分:2)
我不清楚为什么你需要保留-n
选项,但如果你真的需要保留它,你可以使用以下sed
命令:
echo "700" | sed -n 's/[A-Z]//g;p'
这将首先进行替换,如果可能,然后打印该行。
<强>输出:强>
答案 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