svn status
的调用给了我一个与svn图像不同的文件列表。
D subs/abc/deleted_sub.f90
M subs/abc/modified_sub.f90
M subs/abc/Makefile.Routinen
我需要一个字符compile_string
到gmake $compile_string
。
我不希望在我的字符串中为D
和deleted
文件声明Makefile.Routinen
的文件。
我也不想使用临时文件(我有一个工作脚本,但不希望使用临时文件)。
所以我把我的svn状态读成一个字符串:
comp_files=$(svn status)
所以我得到一个长字符串D subs/abc/deleted_sub.f90 M subs/abc/modified_sub.f90 M subs/abc/Makefile.Routinen
。
现在我怎样才能在' D'之后删除下一个文件路径。或者如果是Makefile.Routinen文件?
答案 0 :(得分:1)
请尝试
comp_files=$(svn status | grep -E -v '^D|Makefile.Routinen')
答案 1 :(得分:1)
awk
非常合适
comp_files=$(svn status | awk '$1 != "D" && $2 !~ /Makefile\.Routinen/{print $2}')
$1 != "D"
第一列不应与文字字符串D
$2 !~ /Makefile\.Routinen/
第二列不应包含字符串Makefile.Routinen
{print $2}
如果两个条件都满足,请打印第二列
如果需要整行内容而不是第二列,
comp_files=$(svn status | awk '$1 != "D" && $2 !~ /Makefile\.Routinen/')