데이터 사이의 여러 TABS 삭제

데이터 사이의 여러 TABS 삭제

탭으로 구분된 파일이 있지만 일부 레코드에서는 데이터 사이에 여러 탭이 있습니다.

샘플 데이터: 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$

보시다시피 탭의 여러 인스턴스만 제거됩니다. 단일 탭이 여전히 존재합니다.

관련 정보