gpt4 book ai didi

regex - 为什么我的 sed 命令有时无法使用 r 标志

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:54:53 24 4
gpt4 key购买 nike

我真的很困惑。

有时这个标志工作正常

sed -e 's/dd//gp' 文件

有时我需要使用

sed -re 's/dd//gp' 文件

有时候是这样

sed -ren 's/dd//gp' 文件

有时

sed -n 's/dd//gp' 文件

刚才我试图抑制输出,但我一直在使用 -ren 标志

上周对其他正则表达式有效

现在我不得不使用 -n 来抑制输出

组合有什么区别

我有这个命令

sed -n 's/\/\*\*//gp' file 它适用于 -n 但不适用于 -en

最佳答案

您可以使用 man sed 来确定 sed 的各种标志的用途。

-e 标志只有在为 sed 指定多个引用 block 时才需要。

echo "foo" | sed 's/foo/bar/'
=> bar
echo "foo" | sed -e 's/foo/bar/' -e 's/bar/baz/'
=> baz

-r 标志扩展了 sed 的正则表达式以使用扩展的正则表达式。

echo "foo" | sed 's/f??/bar/'
=> foo
echo "foo" | sed -r 's/f??/bar/'
=> baroo

-n 标志不抑制输出,而是抑制模式空间中任何内容的自动输出。如果您使用 ps///p 标志,则打印仍将显式发生并产生输出。

例如:

echo "foo" | sed ''
=> foo
echo "foo" | sed -n ''
=>
echo "foo" | sed -n 'p'
=> foo
echo "foo" | sed -n 's/foo/bar/p'
=> bar

如果你想抑制 sed 的输出,你可以将 STDOUTSTDERR 重定向到 /dev/null 像这样:

sed '<commands>' &>/dev/null

参见 this介绍 sed 的视频系列。

关于regex - 为什么我的 sed 命令有时无法使用 r 标志,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21471925/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com