다음과 같은 탭으로 구분된 여러 줄의 파일이 있습니다.
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}'