스크립트를 사용하여 필드로 구분된 파일에서 열 제거

스크립트를 사용하여 필드로 구분된 파일에서 열 제거

파이프 기호로 구분된 파일

마이파일.txt

Hello|how|are|you|hope|you|are|doing|fine
Lilly|jasmine|rose|sunflower|nightfire|flowers

3보다 큰 열을 삭제하고 싶습니다. 나는 결과 세트를 원한다.

Hello|how|are
Lilly|jasmine|rose

Unix 쉘 스크립트에서 Unix 명령을 사용하십시오.

답변1

OFS및 (출력) 필드 구분 기호를 사용하여 FS처음 3개 열만 인쇄합니다.

$ awk  'BEGIN{OFS=FS="|"}{print $1,$2,$3}' file.txt
Hello|how|are
Lilly|jasmine|rose

sed를 사용하여 처음 두 " |[everything that's not |]"만 유지하십시오.

~$ sed 's/\(\(|[^|]*\)\{2\}\).*/\1/' file.txt
Hello|how|are
Lilly|jasmine|rose

답변2

cut -d'|' -f1-3 myfile

이것이 더 쉬운 해결책이 될 것입니다. 잘 작동해요!

답변3

awk내부에서 수행하면 충분합니다 .

awk 'BEGIN{FS=OFS="|"}; NF=3' myfile.txt

(일부 의견에서 말했듯이 열이 17개인 경우 . 3로 변경 17.)

관련 정보