使用sed修剪stdout的开头

问题描述 投票:-1回答:3

我正在编写一个小脚本来列出在macos系统中共享的所有目录。 Macos有一个名为sharing -l的简单工具,它将列出与sharing -l | grep path结合后的所有路径。问题是输出如下所示:

path: /Volumes/Storage A/File Server/

而我需要它看起来像这样

/Volumes/Storage\ A/File\ Server/

所以白色空间需要被转义,并且行的开头有路径:并且需要修剪空白区域。我现在一直在用sed乱搞几个小时,但我只是不知道它在一个命令中做到这一点。我希望在sharing -l | grep path的末尾添加一些东西

regex bash macos sed
3个回答
0
投票

你可以用这个:

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

0
投票

你可以尝试一下吗?

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

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/
© www.soinside.com 2019 - 2024. All rights reserved.