첫 번째 필드에서 후행 공백만 제거

첫 번째 필드에서 후행 공백만 제거

다음과 같은 탭으로 구분된 여러 줄의 파일이 있습니다.

99999bbbbt999999BBt99t99t99t99

(어디두번째=공백, t=탭)

두 번째 필드의 후행 공백은 괜찮지만 첫 번째 필드의 후행 공백은 제거해야 합니다. 각 줄의 첫 번째 필드에서 후행 공백을 제거하는 쉬운 방법이 있습니까? sed/awk/tr?

답변1

sed $'s/ *\t/\t/' < file

첫 번째 탭 앞의 공백이 제거됩니다. 이는 ksh93, bash, zsh, mksh 또는 FreeBSD sh $'...'(Single UNIX 사양의 Issue 8에 포함될 예정)와 같은 셸 지원을 가정합니다.

일부 sed구현(예: GNU)에서는 sed다음을 직접 인식합니다 \t.

sed 's/ *\t/\t/' file

그렇지 않으면 POSIXly에서 다음을 수행할 수 있습니다.

TAB=$(printf '\t')
sed "s/ *$TAB/$TAB/" file

POSIXly를 사용하여 동일한 작업을 수행할 수도 있습니다 awk.

awk '{sub(/ *\t/, "\t"); print}'

관련 정보