테이블 파일의 특정 열에서 sed를 사용하는 방법

테이블 파일의 특정 열에서 sed를 사용하는 방법

테이블 파일이 있습니다 A.tsv(구분 기호 = \t).

20655|dkljdjj   66  lala
20644|kmkmoii   75  lolo
20477|kmlkooo   88  lili

|첫 번째 열에서 ( 파이프에 포함) |이후의 모든 내용을 삭제하고 싶습니다 .

20655   66  lala
20644   75  lolo
20477   88  lili

sed를 사용하여 이 작업을 수행하는 방법을 알고 있지만 sed 's/|.*//' A.tsv > B.tsv첫 번째 열뿐만 아니라 파이프 뒤의 모든 항목을 삭제합니다.

그럼 무엇을 해야할지 아시나요? 아마도 awk와 결합되었을까요? 감사해요

답변1

.(모든 문자)를 [^\t](탭을 제외한 모든 문자) 또는 [^[:blank:]](가로 공백을 제외한 모든 문자) 로 바꿀 수 있습니다 .

sed 's/|[^\t]*//' A.tsv > B.tsv

sed 's/|[^[:blank:]]*//' A.tsv > B.tsv

awk를 선호하는 경우:

awk '{sub(/\|.*/,"",$1)} 1' OFS='\t' A.tsv

답변2

그룹화를 사용할 수도 있습니다.sed

sed -E 's/(\S+)\|\S+\s(.*$)/\1\2/' inputfile

산출

20655  66  lala
20644  75  lolo
20477  88  lili

관련 정보