그것을 만들 수 있나요 xargs
사용하는 경우에만 분리 기호로 줄 바꿈을? (리눅스 및 OS X의 bash에서 중요한 경우)
내가 알고 -0
사용할 수 있지만 그것은하지 모든 명령이 지원 NUL로 구분 된 출력으로 피타을합니다.
find -print0 -name \*.foo -maxdepth 1 | xargs -0 -P4
에 비해 입력하기에 너무 많은 방법입니다 ls *.foo | xargs -P4
.
그것을 만들 수 있나요 xargs
사용하는 경우에만 분리 기호로 줄 바꿈을? (리눅스 및 OS X의 bash에서 중요한 경우)
내가 알고 -0
사용할 수 있지만 그것은하지 모든 명령이 지원 NUL로 구분 된 출력으로 피타을합니다.
find -print0 -name \*.foo -maxdepth 1 | xargs -0 -P4
에 비해 입력하기에 너무 많은 방법입니다 ls *.foo | xargs -P4
.
답변:
라인을 따라 뭔가
alias myxargs='perl -p -e "s/\n/\0/;" | xargs -0'
cat nonzerofile | myxargs command
작동해야합니다.
tr '\n' '\0'
작동합니다.
tr
CPU와 손가락 모두 더 빠릅니다.
GNU xargs (Linux의 기본값, findutils
OS X의 MacPorts에서 설치 )는 입력에 대한 -d
사용자 지정 구분 기호 를 지정할 수 있도록 지원합니다.
ls *foo | xargs -d '\n' -P4 foo
alias xxargs="xargs -d '\n'"
내 bashrc에 있습니다. 따라서 다음과 같은 작업을 수행 할 수 있습니다.grep -IRl foo | xxargs sed -i s/foo/bar/g
tr
좋은 생각 이지만 .
brew install findutils
그리고 gxargs
나는, OS X에 감사를 필요 정확히이었다.
Bash를 사용하면 일반적으로 읽는 동안 루프에 찬성하여 조금 까다로운 것에 대해 xargs를 피하는 것이 좋습니다. 귀하의 질문에 while read -ar LINE; do ...; done
대해서는 작업을 수행하십시오 (예를 들어, ${LINE[@]}
전체 행에 대해 LINE과 함께 배열 구문을 사용해야 함 ). 이것은 속임수가 필요하지 않습니다. 기본적으로 read는 \n
줄 종결 자 문자로 사용됩니다.
xargs의 장점과 단점에 대한 질문을하는 동안 while-read loops ... 완료!
xargs -n1 -d'\n'
전체를 모방 할 수는 없고 모방 할 수도 있습니다 xargs
.
xargs -n$N
약간의 추가 스크립트만으로도 시뮬레이션 할 수 있습니다 .
read
별도의 변수에서 더 많은 단어를 읽거나로 구분 기호를 변경 하는 등의 옵션을 사용할 수 있습니다 IFS=' '
.
표준 버전이 아닙니다. 해킹 된 버전이 find ... -print0 | xargs -0 ...
있습니다. ' ' 에 대해 알기 전에 사용했습니다 . 사본을 원하시면 저에게 연락하십시오-내 프로필을 참조하십시오. (로켓 과학은 없다-그것은 거의 직무를 수행한다. 그것은 완전한 xargs 복제본이 아니다.)
cat file | xargs | sed 's/ /\n/ig'
표준 Linux bash 도구를 사용하여 공백을 줄 바꿈으로 변환하는 것은 어떻습니까?
file
공백과 줄 바꿈 이 포함 된 경우이 명령의 결과로 구분할 수 없습니다.이 질문은 요청과 반대 방향으로 진행됩니다.