使用sed修剪stdout的开头

时间:2019-03-28 17:01:36

标签: regex bash macos sed

我正在编写一个小脚本,以列出macOS系统中共享的所有目录。 Macos有一个名为sharing -l的简单工具,一旦与sharing -l | grep path结合使用,它将列出所有路径。问题是输出看起来像这样:

path: /Volumes/Storage A/File Server/

我需要它看起来像这样

/Volumes/Storage\ A/File\ Server/

因此,必须对空格进行转义,并以path:作为行的开头,并且必须对空格进行修剪。我一直在困扰着sed几个小时,但是我对它却一无所知,无法在一个命令中完成所有这些操作。我希望在sharing -l | grep path

的末尾添加一些内容

3 个答案:

答案 0 :(得分:0)

您可以使用此:

sharing -l | sed -En '/^path:/{ s/^path:[[:blank:]]*//; s/[[:blank:]]+/\\&/g; p;}'

答案 1 :(得分:0)

请您尝试以下。

sharing -l | awk '{$2=$2"\\";$3=$3"\\";sub(/^path: +/,"")} 1'

答案 2 :(得分:0)

如果您不需要转义空格:

$ sharing -l | sed -n 's/^path:[[:space:]]*//p'
/Volumes/Storage A/File Server/

,如果您这样做:

$ sharing -l |  awk 'sub(/^path:[[:space:]]*/,""){gsub(/[[:space:]]/,"\\\\&"); print}'
/Volumes/Storage\ A/File\ Server/