首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >AWK -从git status命令解析第二列

AWK -从git status命令解析第二列
EN

Stack Overflow用户
提问于 2018-07-21 18:40:22
回答 6查看 701关注 0票数 2

我需要从上面的输出中解析第二列-问题是,如果文件名包含空格并用引号括起来。

命令:

代码语言:javascript
复制
$ git status -u -s

输出:

代码语言:javascript
复制
 D README.md
 D mail/falover.sh
?? "ahh/Nov nnsdfd file.txt"
?? fremover.sh
?? mail/ahooooj
?? mail/awww
?? mail/file_test
?? mail/git.sh
?? mail/test

非常感谢!

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2018-07-21 19:57:06

尝试使用-porcelain=2选项,该选项将删除双引号,以便以后可以使用以下内容:

代码语言:javascript
复制
$ git status --porcelain=2 | cut -d" " -f9-

请注意,这将只返回跟踪的文件,如果想要得到所有的文件,包括未跟踪的文件,也在引号内尝试这一点;

代码语言:javascript
复制
$ git status --porcelain | cut -c4-

对于awk,这可以使用:

代码语言:javascript
复制
$ git status --porcelain | awk '{$1 = ""; print substr($0, 2)}'

它的工作方式是将第一列设置为"",然后打印整行$0,但使用substr删除用作分隔符的空格。(这将强制awk使用空格作为新的分隔符来重新构建整个记录$0 -请在comments &https://stackoverflow.com/a/15475578/1135424中检查@Ed Morton的解释)

检查Porcelain Format Version 2

票数 1
EN

Stack Overflow用户

发布于 2018-07-21 18:46:28

如果你只需要那些带有"的行,并且你需要第二个字段的值从"",那么下面的代码可能会对你有所帮助。

代码语言:javascript
复制
your_command | awk 'match($0,/".*"/){print substr($0,RSTART+1,RLENGTH-2)}'

如果您想要在输出中包含"和所有其他行(其中没有" )时打印文件名,那么下面的代码可能会对您有所帮助。

代码语言:javascript
复制
your_command | awk 'match($0,/".*"/){print substr($0,RSTART+1,RLENGTH-2);next} 1'
票数 1
EN

Stack Overflow用户

发布于 2018-07-21 21:59:22

取决于您是否要保留引号:

代码语言:javascript
复制
$ sed -E 's/^ *[^ ]+ +//' file
README.md
mail/falover.sh
"ahh/Nov nnsdfd file.txt"
fremover.sh
mail/ahooooj
mail/awww
mail/file_test
mail/git.sh
mail/test

$ sed -E 's/^ *[^ ]+ +//; s/^"|"$//g' file
README.md
mail/falover.sh
ahh/Nov nnsdfd file.txt
fremover.sh
mail/ahooooj
mail/awww
mail/file_test
mail/git.sh
mail/test

如果您的sed不支持使用-E的ERE,那么:

代码语言:javascript
复制
$ sed 's/^ *[^ ]* *//; s/^"|"$//g' file
$ sed 's/^ *[^ ]* *//; s/^"//; s/"$//' file

请注意,在边缘情况下,这将失败,即当您的文件名以引号开头和结尾时(对于UNIX文件名,这是允许的)。如果可能发生这种情况,请在您的问题中告诉我们,并将其包含在您的示例输入/输出中。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51455239

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档