![使用 sed 删除多个单词](https://linux22.com/image/902877/%E4%BD%BF%E7%94%A8%20sed%20%E5%88%A0%E9%99%A4%E5%A4%9A%E4%B8%AA%E5%8D%95%E8%AF%8D.png)
我正在尝试使用 sed 摆脱以下输入:
branch
branch
not
"git
"git
那是一个空行,即术语“分支”,而不是“git”。但是以下行不起作用:
git status 2>&1 | awk '{print $2}' | sed 's/^$//g' | sed 's/^branch||^not||^changes||^"git//g'
我该如何正确地写下这一行才能一次性摆脱所有这些?
答案1
实现你想要达到的目标的正确方法如下:
git status --porcelain | sed s/^...//
从git help status
:
--porcelain[=]
以易于脚本解析的格式提供输出。这类似于短输出。
以下是您想要使用命令的内容:
使用sed
:
... | sed -r '/(^"git|^branch|^not|^$)/d'
使用grep
:
... | grep -Ev '^branch|^not|^"git|^$'
git
它从您的和awk
命令返回文件名。