xargs
표준 입력 스트림에서 여러 인수가 생성된 경우 ( -d
표준 입력 스트림을 여러 인수로 분할하기 위한 구분 기호를 지정할 수 있음) xargs
실행할 명령에서 이를 어떻게 다시 정렬할 수 있나요?
xargs
-I
매개변수를 대체하기 위해 명령에 자리 표시자를 지정하는 옵션이 있습니다 . stdin 입력 스트림에서 여러 매개변수를 생성할 때 xargs
자리 표시자가 매개변수와 동일한 횟수로 나타나야 합니까?
예를 들어 표준 입력에서 변환된 인수 수는 명령의 자리 표시자 수와 동일해야 합니까?
$ xargs -I x -d " " ls x x x
-l -t -r
답변1
직접 시도해 볼 수 있습니다.
$ echo -n a b c d e f g | xargs -I x -d " " echo x x x
a a a
b b b
c c c
d d d
e e e
f f f
g g g
매뉴얼에서:
-I 교체-str
초기 인수의 교체-str 발생을 표준 입력에서 읽은 이름으로 바꿉니다. 또한 따옴표가 없는 공백은 항목을 종료하지 않으며 대신 구분 기호는 개행 문자입니다. -x 및 -L 1을 의미합니다..-L max-lines
명령줄당 최대 max-lines 공백이 아닌 입력 줄을 사용합니다. 후행 공백으로 인해 입력 줄이 논리적으로 다음 입력 줄로 계속됩니다. -x를 의미합니다.
즉 -I
, -L 1
호출당 하나의 매개변수만 사용됩니다. 보시다시피 각 발생은 x
매개변수로 대체됩니다.
언뜻 보면 놀랍게 보일 수도 있는 효과도 있습니다.
$ echo a b c d e f g | xargs -I x -d " " echo x x x
a a a
b b b
c c c
d d d
e e e
f f f
g
g
g
options가 없으면 -n
echo는 끝에 개행 문자를 출력합니다. option 을 사용할 때 -d
줄 xargs
바꿈은 구분 기호로 처리되지 않고 인수의 일부로 처리되므로 g\n
: 의 출력에 줄 바꿈이 나타납니다 g\n g\n g\n
.