열을 사용하여 단일 행의 형식을 지정하는 방법은 무엇입니까?

열을 사용하여 단일 행의 형식을 지정하는 방법은 무엇입니까?

Phonebook.dat 파일에 기본 전화번호부가 있습니다.

$ cat phonebook.dat
Onkh,Gregor:0123456789
Steinert,Franz:02473894091
Rubrecht,Magdalena:01474653371

그런 다음 다음을 사용하여 파일 형식을 지정할 수 있습니다.column

$ column -t -s ",:" phonebook.dat
Onkh      Gregor     0123456789
Steinert  Franz      0247389409
Rubrecht  Magdalena  01474653371

하지만 파일의 한 줄만 출력하고 싶다면 어떻게 해야 할까요? 페이지 기반의 man경우 column마지막 매개변수로 파일이 필요합니다.

이 문제를 해결하려고 했지만 sed"," 및 ":"를 다음과 같이 바꾸면 결과가 일관되지 않습니다.

$ sed 's/,/\t/g; s/:/\t/g' telefonbuch.dat
Onkh    Gregor  0123456789
Steinert        Franz   02473894091
Rubrecht        Magdalena       01474653371

서식이 지정된 파일에서 한 줄을 사용하는 방법은 무엇입니까 column?

답변1

한 줄만 형식화 하려면 column유틸리티에 한 줄만 제공하십시오. 아래에서는 샘플 데이터의 행 2에만 형식을 지정합니다.

$ sed -n '2p' file | column -s ',:' -t
Steinert  Franz  02473894091

filename 인수는 column선택 사항입니다. 누락된 경우 유틸리티는 표준 입력에서 읽습니다. 위의 파이프라인에서는 이 사실을 사용하여 명령의 출력 형식을 지정합니다 sed.

모든 명령을 사용하여 전화번호부에서 데이터를 추출할 수 있습니다. 여기서는 awk명령을 사용하여 Magdalena두 번째 필드의 항목을 출력합니다.

$ awk -F '[,:]' '$2 == "Magdalena"' file | column -s ',:' -t
Rubrecht  Magdalena  01474653371
$ awk -v name="Magdalena" -F '[,:]' '(family != "" && $1 == family) || (name != "" && $2 == name)' file | column -s ',:' -t
Rubrecht  Magdalena  01474653371
$ awk -v family="Rubrecht" -F '[,:]' '(family != "" && $1 == family) || (name != "" && $2 == name)' file | column -s ',:' -t
Rubrecht  Magdalena  01474653371

관련 정보