删除 GNU Parallel 中的自动单引号

问题描述 投票:0回答:1

我正在运行此命令,以使用文本文件的基本名称更改文本文件中的“要替换的文本”:

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 quoting single-quotes
1个回答
0
投票

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(); =}' ::: *
© www.soinside.com 2019 - 2024. All rights reserved.