공백으로 구분된 여러 단어를 인쇄합니다.

공백으로 구분된 여러 단어를 인쇄합니다.

다음과 같은 데이터 형식(이름, 나이, 국가)의 텍스트 파일이 있습니다.

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

관련 정보