테이블 파일이 있습니다 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