탭으로 구분된 파일이 있지만 일부 레코드에서는 데이터 사이에 여러 탭이 있습니다.
샘플 데이터: M^I^I^I^IJaghoub(^I는 cat -vet 출력의 탭 구분 기호입니다.) 원하는 출력: MJaghoub
나는 성공하지 못한 채 sed 및 tr 명령을 사용했습니다.
여러 개의 TABS만 삭제하는 방법을 알려주세요.
답변1
tr -s '\t' <file >newfile
나란히 있는 여러 탭을 하나의 탭으로 압축 file
하고 수정된 내용을 작성 해야 합니다 newfile
.
모든 탭을 삭제 -s
하도록 변경합니다 .-d
답변2
sed 's|[\t][\t][\t]*||g' file.txt
이렇게 하면 두 개 이상의 탭 인스턴스가 삭제되지만 단일 탭 인스턴스에는 영향을 주지 않습니다.
원하는 출력이 있음을 확인하고 파일을 그 자리에서 편집하려면 -i
'
sed -i 's|[\t][\t][\t]*||g' file.txt
1, 2, 3, 4, 5개의 탭 인스턴스가 있는 파일로 이것을 테스트했는데 단일 탭의 인스턴스를 유지하면서 여러 탭의 인스턴스를 제거했습니다. 두 탭의 인스턴스를 효과적으로 제거하고 이후에 0개 이상의 탭이 나타납니다.
확인을 위해 질문에 여러 탭과 단일 탭 인스턴스가 있는 줄을 더 추가했습니다.
cat -vet
(걱정하지 마세요 $
. 줄 끝을 나타냅니다. 다음을 사용 하는 경우 줄 끝을 나타내지 cat -vT
않습니다 .$
M^I^I^I^I^IJaghoub$
askdjfkasdf^I^Iksajk^I^Ijklsajkd$
klasjdfj^I^I^Ikljkasjdf^Ijaljkdsf$
asdkfj^I^I^Iklkljasdf^I^Ilkjkasdf$
sadfjkl^Ikjljas^Ikkjk^Ilkjlkj$
산출:
MJaghoub$
askdjfkasdfksajkjklsajkd$
klasjdfjkljkasjdf^Ijaljkdsf$
asdkfjklkljasdfkjkasdf$
sadfjkl^Ikjljas^Ikkjk^Ilkjlkj$
보시다시피 탭의 여러 인스턴스만 제거됩니다. 단일 탭이 여전히 존재합니다.