파일의 세 번째 탭 위치 다음에 탭 문자를 쉼표로 바꾸는 방법

파일의 세 번째 탭 위치 다음에 탭 문자를 쉼표로 바꾸는 방법

레코드당 필드 수가 다른 탭으로 구분된 텍스트 파일이 있습니다. 하지만 파일의 세 번째 탭 이후의 모든 탭을 쉼표로 바꾸고 싶습니다.

입력하다

100 Apple COOK USA EUROPE CHINA
200 Micro BIIL UK INDIA
300 Saums Chul SK

원하는 출력:

100 Apple COOK USA,EUROPE,CHINA
200 Micro BIIL UK,INDIA
300 Saums Chul SK

답변1

이 시도,

sed -i 's#\t#,#4g' file


100 Apple   COOK    USA,EUROPE,CHINA
200 Micro   BIIL    UK,INDIA
300 Saums   Chul    SK
  • 4g각 줄에서 탭 문자의 네 번째 항목을 쉼표로 바꿉니다.

답변2

사용 awk:

awk  'BEGIN{OFS=IFS="      ";}{for(i=5;i<=NF;i++){$4=$4","$i;} print $1,$2,$3,$4}' file

귀하의 사례에 대한 결과는 다음과 같습니다:

100 Apple   COOK    USA,EUROPE,CHINA
200 Micro   BIIL    UK,INDIA
300 Saums   Chul    SK

awk 명령은 파일에서 한 줄씩 읽습니다. 이제 첫 번째 두 번째 세 번째 단어를 그대로 인쇄하지만 네 번째 단어 이후에는 쉼표로 연결합니다.

관련 정보