linux shell流重定向以直接运行命令列表
我有一个svn项目。。。要获取未添加文件的列表(在我的示例中为数百个),请执行以下操作: 输出linux shell流重定向以直接运行命令列表,linux,bash,shell,command-line,io-redirection,Linux,Bash,Shell,Command Line,Io Redirection,我有一个svn项目。。。要获取未添加文件的列表(在我的示例中为数百个),请执行以下操作: 输出 ? somefile.txt ? somefile1.txt ? somefile2.txt svn add somefile.txt svn add somefile1.txt svn add somefile2.txt 我最近被介绍给sed。。。现在我有了一个要运行的命令列表 svn status | grep "^?"|sed "s/^?/svn add/" 输出 ? somefile.t
? somefile.txt
? somefile1.txt
? somefile2.txt
svn add somefile.txt
svn add somefile1.txt
svn add somefile2.txt
我最近被介绍给sed。。。现在我有了一个要运行的命令列表
svn status | grep "^?"|sed "s/^?/svn add/"
输出
? somefile.txt
? somefile1.txt
? somefile2.txt
svn add somefile.txt
svn add somefile1.txt
svn add somefile2.txt
我意识到我可以通过管道把它归档
svn status | grep "^?"|sed "s/^?/svn add/" >out.sh && sh out.sh && rm out.sh
但我希望避免写入临时文件。有没有一种方法可以通过管道将其传输到以下命令:
svn status | grep "^?"|sed "s/^?/svn add/" |some_command_that_runs_each_line
那么
bash
/sh
呢
svn status | grep "^?"|sed "s/^?/svn add/" | bash
那么:
for i in `svn status | grep "^?"|sed "s/^?/svn add/"`
do
$i
done
您要查找的是
xargs
命令:
svn status | grep "^?" | sed "s/^..//" | xargs svn add
您还可以使用替换:
svn add `svn status | grep "^?"` | cut -c 3-`
您的答案现在看起来非常明显,但我不知道bash/sh可以接受流重定向。谢谢。需要删除
?
,所以在grep之后的管道中添加cut-d”“-f2-