Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/unix/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Grep:从git status-s的行输出中获取第一个字符/符号_Git_Unix_Grep - Fatal编程技术网

Grep:从git status-s的行输出中获取第一个字符/符号

Grep:从git status-s的行输出中获取第一个字符/符号,git,unix,grep,Git,Unix,Grep,此命令是: while read -r line do modfied="$line" echo "Found: $modfied" done < <(git status -s | grep "M " | awk '{if ($1 == "M") print $2}' | grep --file=.git/ForGeneratingSBConfigAlert.txt --fixed-strings) 它逐行打印git status-s命令的结果,并在表示该文件已被

此命令是:

while read -r line
do
    modfied="$line"
    echo "Found: $modfied"
done < <(git status -s | grep "M " | awk '{if ($1 == "M") print $2}' | grep --file=.git/ForGeneratingSBConfigAlert.txt --fixed-strings)
它逐行打印git status-s命令的结果,并在表示该文件已被修改后获得带有空格的“M”符号。但我希望它只匹配命令输出的第一个符号,如果第一个符号匹配以下符号之一,则输出整行:M、A、D、R、C。第二个符号可以是每隔一个符号,甚至在模式开始时使用空格。此符号在行首匹配

... | grep '^M ' | ...
顺便说一句,您可以在awk程序中使用模式/^M/将其折叠到awk命令中,这将大大简化shell管道

... | awk '/^M / {print $2}' | ...

所以要澄清的是:您想问一下如何更改grep命令,使其匹配多个字符中的任意一个,而不仅仅是M?或者您想询问如何将其更改为忽略行中的第二个字符?或者别的什么?这对我来说很好:git status-s|grep-E^M|D^A|R|C|awk{if$1==M|grep$1==D||1==A|M|D$1==C print$2}grep-file=.git/forgenerasbconfigalert.txt-修复了字符串,但我不知道如何制作awk,即使有人,也请帮助我。我承认我不知道如何使用谷歌。请看这一行:awk'{if$1==M print$2}'。我怎么能让它在M之后搜索任何字符,即使是空格?我不明白你在问什么。搜索任何字符是什么意思?是否要选择以M开头并后跟任何其他字符的行,即长度为2或以上且以M开头的任何行?或长度为2或2以上且以MDARC之一开头的线条?还是以MDARC中的一个开头并在该行后面包含特定字符的行?哪一个?还是选择以MDARC之一开头的行,然后在该行的其余部分搜索特定字符并打印?还是别的什么?