특정 열의 구분 기호를 바꾸는 방법

특정 열의 구분 기호를 바꾸는 방법

이것은abc.txt파일은 5개의 열로 구성됩니다.

ID|first name|middle name|last name|address 
1 | john     | whatever  | smith   | somewhere

이 출력을 얻으려면 어떻게 해야 합니까?

ID|first name middle name last name|address
1 | john whatever smith            |somewhere

'|'특정 열의 공백만 새 파일로 바꾸는 방법정의.txt. 이 경우 2열부터 4열까지입니다.

답변1

해결책:

awk 'BEGIN{ FS=OFS="|" }{ cs=$2$3$4; gsub(/ +/, " ", cs); print $1,sprintf("%-32s",cs),$5 }' abc.txt
  • FS=OFS="|"- 필드 구분 기호

  • cs=$2$3$4- 두 번째, 세 번째, 네 번째 필드를 연결합니다.

  • gsub(/ +/, " ", cs)- 불필요한 공백 제거

  • sprintf("%32s",cs)- 형식화된 연결 문자열


산출:

ID|first namemiddle namelast name  |address 
1 | john whatever smith            | somewhere

답변2

사용 sed:

sed -e 's,|\([^|]*\)|\([^|]*\)|,|\1 \2 ,' abc.txt > def.txt

여기s사용된 기능을 다루는 좋은 소개입니다 .

관련 정보