将xargs放入分词占位符{}

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

(尽管word splitting在Bash中有特定定义,但在本文中,它的意思是要在空格或制表符上分割。]

使用此输入到xargs演示问题,

$ cat input.txt
LineOneWithOneArg
LineTwo WithTwoArgs
LineThree WithThree Args
LineFour  With  Double  Spaces

和此Bash命令回显传递给它的参数,

$ bash -c 'IFS=,; echo "$*"' arg0 arg1 arg2 arg3
arg1,arg2,arg3

注意xargs -L1如何将每一行单词拆分为多个参数。

$ xargs <input.txt -L1 bash -c 'IFS=,; echo "$*"' arg0
LineOneWithOneArg
LineTwo,WithTwoArgs
LineThree,WithThree,Args
LineFour,With,Double,Spaces

但是,xargs -I{}将整个行作为单个参数扩展为{}

$ xargs <input.txt -I{} bash -c 'IFS=,; echo "$*"' arg0 {}
LineOneWithOneArg
LineTwo WithTwoArgs
LineThree WithThree Args
LineFour  With  Double  Spaces

尽管在大多数情况下,这是完全合理的行为,但有时还是首选分词行为(第一个xargs示例)。

虽然xargs -L1可以被视为一种解决方法,但它只能用于在命令行的end处放置参数,因此无法表达]]

$ xargs -I{} command first-arg {} last-arg

带有xargs -L1。 (当然,除非command能够以其他顺序接受参数,如选项一样)。

展开xargs -I{}占位符时,是否有任何方法可以使{}拆分成每一行?

(尽管单词拆分在Bash中有特定的定义,但在本文中,它意味着拆分空格或制表符。)使用此输入到xargs演示该问题,$ cat input.txt LineOneWithOneArg ...

bash xargs
1个回答
1
投票

排序。

© www.soinside.com 2019 - 2024. All rights reserved.