我正在运行此命令,以使用文本文件的基本名称更改文本文件中的“要替换的文本”:
parallel --dry-run sed -i \"s/Text to replace/{.}/\" {} ::: *.txt
但是,当文本文件的文件名中有空格时,Parallel 会插入单引号:
sed -i "s/Text to replace/'with space'/" 'with space.txt'
如果没有空格,Parallel 不会插入单引号:
sed -i "s/Text to replace/without_space/" filename_without.txt
有没有办法让Parallel永远不会自动插入单引号?
GNU Parallel shell 引用替换字符串。这通常是您想要的:
touch "important_file.txt" "not important_file.txt"
parallel rm ::: not*
但是,在某些情况下,您确实希望完全控制替换字符串。在这种情况下,您可以告诉 GNU Parallel 取消引用字符串:
parallel --dryrun echo {=uq=} ::: *
uq()
是一个perl函数,所以你可以在{==}中做其他事情:
parallel --dryrun echo '{= s/a/b/; uq(); =}' ::: *