wef*_*fa3 4 shell bash xargs command
我想知道是否有一个过滤器命令来引用输入行。
所以当管道:
line number 1
line number 2
line number 3
Run Code Online (Sandbox Code Playgroud)
到它,你得到:
"line number 1"
"line number 2"
"line number 3"
Run Code Online (Sandbox Code Playgroud)
我需要这个命令来通过管道传输行以xargs确保xargs将其line number 1视为一个参数而不是三个参数。我相信它还有许多其他用途。
有这样的命令吗?这叫什么?
不是专门为它设计的,而是许多多功能工具可以做到这一点:
sed 's/^/"/;s/$/"/'
perl -pe 's/^/"/;s/$/"/' 或者 perl -lne 'print "\"$_\""'
awk '{printf "\"%s\"\n",$0}'
while read -r line; do printf '"%s"\n' "$line"; done
(所有这些都假设该行不包含双引号。如果包含,它将中断xargs)
我会提供 Perl 的quotemeta功能。不是很你的要求,因为它避开了空间,而不是用引号替换它们。
但作为附带福利,它还处理其他特殊字符(如*):
perl -nle 'print quotemeta'
Run Code Online (Sandbox Code Playgroud)
(或者在评论中指出的,较短的形式:perl -ple '$_=quotemeta')
这需要你的台词并将它们变成:
line\ number\ 1
line\ number\ 2
line\ number\ 3
Run Code Online (Sandbox Code Playgroud)
应该有相同的结果 - 以及处理:
Line number \"`rm -rf *`\"
Run Code Online (Sandbox Code Playgroud)
和类似的恶作剧:)