xargs가 stdin과 잘 작동하도록 만드는 방법은 무엇입니까?

xargs가 stdin과 잘 작동하도록 만드는 방법은 무엇입니까?
$ seq 1 3
1
2
3
$ seq 1 3 | xargs echo
1 2 3
$

seq 1 3표준 출력에서 ​​한 줄에 하나의 항목을 나열하는 명령을 정신적으로 대체하십시오. 예상한 것(예: echo 1; echo 2; echo 3;별도의 줄( )에 항목)을 더 많거나 적게 얻으려면 어떻게 해야 합니까?

답변1

xargs명령줄에 여러 인수가 배치되는 경우가 많습니다 . 한 번에 하나의 매개변수로 제한하려면 다음 -n옵션을 사용하십시오.

$ seq 3 | xargs -n 1 echo
1
2
3

문서

에서 man xargs:

-n 최대 매개변수
명령줄당 최대 max-args개의 인수를 사용합니다. 크기가 초과되면(-s 옵션 참조), -x 옵션이 제공되지 않는 한 max-args보다 적은 인수가 사용되며, 이 경우 xargs가 종료됩니다.

-n사이의 차이-L

-L유사하지만 한 가지 추가 기능이 있습니다. 와 달리 -n후행 공백이 있는 줄은 다음 줄로 계속됩니다. 관찰하다:

$ echo $'1 \n2\n3\n4'
1 
2
3
4
$ echo $'1 \n2\n3\n4' | xargs -L 1 echo
1 2
3
4
$ echo $'1 \n2\n3\n4' | xargs -n 1 echo
1
2
3
4

답변2

더 많은 연구를 통해 답이 밝혀졌습니다xargs가 각 입력 줄에 대해 명령을 한 번씩 실행하도록 합니다.:

$ seq 1 3 | xargs -L 1 echo
1
2
3

관련 정보