파이프 기호로 구분된 파일
마이파일.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
.)