단일 컷 명령을 사용하여 입력 파일의 두 필드에 대해 두 개의 출력 파일을 생성할 수 있습니까?

단일 컷 명령을 사용하여 입력 파일의 두 필드에 대해 두 개의 출력 파일을 생성할 수 있습니까?

루프에서 이 작업을 수행하기 위해 쉘 스크립트를 작성할 수 있지만 터미널을 사용하는 한 줄 솔루션이 있습니까?

답변1

명령이 아닙니다 cut. 당신은 이것을 할 수 있습니다 awk:

awk -F '\t' '{print $1 > "file1"; print $2 > "file2"}' < file

또는 각 필드에 대해 다음을 수행합니다.

awk -F '\t' '{for (i = 1; i <= NF; i++) print $i > "file" i}' < file

또는 파일을 두 번 읽는 것을 피하기 위해 파이프와 2개의 호출을 사용하지 않으려면 cut프로세스 대체를 지원하는 AT&T ksh, zsh 또는 bash와 같은 셸을 사용하세요.

< file tee >(cut -f2 > file2) | cut -f1 > file1

조심해 ksh, bash그러지 마기다리다cut이 명령이 프로세스 대체에서 실행되도록 하려면 이러한 셸에서 그 file2이후에 다음 명령을 실행할 때 아직 완료되지 않았을 수 있습니다.

답변2

나는 당신이 이것을 할 수 있다고 생각합니다 :

cut -f1 input | tee output1 | cut -f1 > output2

첫 번째와 두 번째 열을 제출하려는 경우.

관련 정보