Git 如何签出所有修改的文件?

Git 如何签出所有修改的文件?,git,awk,Git,Awk,我正在尝试签出我的repo中所有修改的文件: git status | grep modified | awk '{split($0,a,":"); print a[2]}' 提供文件名,即,git status返回: modified: a.txt modified: b.txt 和awk返回(注意空格): 我尝试将打印替换为git签出: git status | grep modified | awk '{split($0,a,":"); git checkout a[2]}

我正在尝试签出我的repo中所有修改的文件:

git status | grep modified | awk '{split($0,a,":"); print a[2]}'
提供文件名,即,
git status
返回:

modified:    a.txt
modified:    b.txt
和awk返回(注意空格):

我尝试将
打印
替换为
git签出

git status | grep modified | awk '{split($0,a,":"); git checkout a[2]}'
但它不起作用

然后我认为它可能与空白有关,所以我用

git status | grep modified | awk '{split($0,a,":"); gsub(" ","",a[2]); git checkout a[2]}'
当我使用
print
而不是
git checkout
时,我看到打印文件名时没有任何空格,这是我想要的

然而,这也不起作用,而且没有任何警告。我想这可能是因为awk没有调用命令,只是编辑了文本,所以我之前尝试添加了一个
evil
,但没有效果


我怎样才能做到这一点呢?

请您尝试一下以下内容(我从您的代码中删除了
grep
部分,因为
awk
本身可以搜索文本)一次。我无法测试它,因为git不在我的系统中:)

说明:
awk
中,只需在
awk
的帮助下创建脚本文件(仅适用于其中包含字符串
已修改的
的行。脚本文件名将为script.ksh),然后通过提供适当的执行权限来执行它。我们可以看到
manawk
使用
system
awk
功能,这有助于
awk
在其程序中运行BASH级别的命令。还有一点
关闭(“script.ksh”)
应避免出现错误,如OP-get
文件正忙…等
因为
awk
程序仍在运行,所以文件将在后端打开,我们关闭它之后,它就可以用于运行它了

编辑:上述解决方案使用脚本文件来运行所有git语句,以防您希望在不创建文件的情况下运行它们,然后尝试以下操作

git status | awk '/modified/{split($0,a,":"); print "git checkout " a[2]}' | sh

请您尝试一下(我从您的代码中删除了
grep
部分,因为
awk
本身可以搜索文本)一次。我无法测试它,因为git不在我的系统中:)

说明:
awk
中,只需在
awk
的帮助下创建脚本文件(仅适用于其中包含字符串
已修改的
的行。脚本文件名将为script.ksh),然后通过提供适当的执行权限来执行它。我们可以看到
manawk
使用
system
awk
功能,这有助于
awk
在其程序中运行BASH级别的命令。还有一点
关闭(“script.ksh”)
应避免出现错误,如OP-get
文件正忙…等
因为
awk
程序仍在运行,所以文件将在后端打开,我们关闭它之后,它就可以用于运行它了

编辑:上述解决方案使用脚本文件来运行所有git语句,以防您希望在不创建文件的情况下运行它们,然后尝试以下操作

git status | awk '/modified/{split($0,a,":"); print "git checkout " a[2]}' | sh

我知道你做了什么,但是这在我的机器上失败了:语法错误…@CIsForCookies,试试
git status | awk'/modified/{split($0,a,“:”);打印“git checkout”a[2]>(“script.ksh”)}END{system(“chmod 755 script.ksh;/script.ksh”)}
git status | awk'/modified/{split($0,a,:”;打印“git checkout”a[2]>“script ksh”}结束{system(“chmod 755 script.ksh;/script.ksh”)}
一次,然后让我知道?输出:文本文件busy@CIsForCookies,哦,对不起,现在编辑了我的代码,我们应该在代码的结尾部分关闭(“script.ksh”)。检查一次?临时文件很没用;只需直接连接到
ksh
(或者更确切地说,连接到
sh
,尽管文件名有误导性,但这可能是这样做的)。我看到了您所做的,但是这在我的机器上失败了:语法错误…@CIsForCookies,尝试
git status | awk'/modified/{split($0,a,“:”);打印“git checkout”a[2]>(.ksh”)}END{system(“chmod 755 script.ksh;/script.ksh”)}
git status|awk'/modified/{split($0,a,“:”);打印“git checkout”a[2]>“script.ksh”}结束{system(“chmod 755 script.ksh;/script.ksh”)}
一次,然后让我知道?输出:文本文件busy@CIsForCookies哦,对不起,现在编辑了我的代码,我们应该
关闭(“script.ksh”)
在该代码的结尾部分。检查一次?临时文件是非常无用的;只需直接连接到
ksh
(或者更确切地说,连接到
sh
,尽管文件名有误导性,但这很可能会这样做)。为什么不干脆
git ls文件-mz | xargs-0 git签出
?为什么不干脆
git ls文件-mz | xargs-0 git签出
git status | awk '/modified/{split($0,a,":"); print "git checkout " a[2]}' | sh