다음과 같은 데이터 형식(이름, 나이, 국가)의 텍스트 파일이 있습니다.
michael jordans 25 US
adam smith 30 UK
chris wood ABC 22 Aus
cat text.txt | awk {'print $1'}
--> 명령을 사용하면 다음이 인쇄됩니다.
michael
adam
chris
하지만 전체 이름을 인쇄하고 싶습니다.
michael jordans
adam smith
chris wood ABC
어떤 명령을 사용해야 합니까?
형식 데이터를 변경할 수 있습니다. 예를 들면 다음과 같습니다.
michael jordans|25|US
adam smith|30|UK
chris wood ABC|22|Aus
답변1
sed 's/^\([^0-9]*\).*/\1/' text.tex
이는 이름에 숫자 문자가 포함되어 있지 않고 이름 뒤의 필드가 숫자로 시작한다고 가정합니다.
|
필드를 다음과 같이 구분할 때
sed 's/^\([^|]*\).*/\1/' text.tex
아니면 awk를 선호한다면 이렇게 할 수 있습니다
awk -F\| '{print $1}' text.tex
답변2
올바른 필드 구분 기호를 갖도록 파일을 변경하면 |
해결책은 간단합니다 .
awk -F'|' '{print $1}' input_file
올바른 필드 구분 기호 대신 공백(예상 필드에도 나타남)을 사용하는 경우 다음을 수행할 수 있습니다.
awk '{ a = $1; for (i=2; i <= NF-2; i++) a = a " " $i; print a; }' input_file