使用sed修剪stdout的开头
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用sed修剪stdout的开头相关的知识,希望对你有一定的参考价值。
我正在编写一个小脚本来列出在macos系统中共享的所有目录。 Macos有一个名为sharing -l
的简单工具,它将列出与sharing -l | grep path
结合后的所有路径。问题是输出如下所示:
path: /Volumes/Storage A/File Server/
而我需要它看起来像这样
/Volumes/Storage A/File Server/
所以白色空间需要被转义,并且行的开头有路径:并且需要修剪空白区域。我现在一直在用sed乱搞几个小时,但我只是不知道它在一个命令中做到这一点。我希望在sharing -l | grep path
的末尾添加一些东西
答案
你可以用这个:
sharing -l | sed -En '/^path:/{ s/^path:[[:blank:]]*//; s/[[:blank:]]+/\&/g; p;}'
另一答案
你可以尝试一下吗?
sharing -l | awk '{$2=$2"\";$3=$3"\";sub(/^path: +/,"")} 1'
另一答案
如果您不需要转义空格:
$ 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/
以上是关于使用sed修剪stdout的开头的主要内容,如果未能解决你的问题,请参考以下文章
使用 sed 在 linux 中查找以开头并替换的行 [重复]