Macのsedは¥tが使えない

BSD由来のMacsedでは¥t(Tab)が使えない。

> cat sample.txt
A	B	C	D E F G
> od -a sample.txt 
0000000    A  ht   B  ht   C  ht   D  sp   E  sp   F  sp   G  nl
> cat sample.txt | /usr/bin/sed -e "s/\t//g" | od -a
0000000    A  ht   B  ht   C  ht   D  sp   E  sp   F  sp   G  nl

上記のようにファイル中のTabを削除できない。

対策

Gnusedを使用する。

brew install gnu-sed
> cat sample.txt | /usr/local/bin/gsed -e "s/\t//g" | od -a
0000000    A   B   C   D  sp   E  sp   F  sp   G  nl

Tabが削除される。また¥sも使える。

> cat sample.txt | /usr/local/bin/gsed -e "s/\s//g" | od -a
0000000    A   B   C   D   E   F   G  nl

MacsedでTabを削除するにはTabを直接入力(コントロール+vを入力した後Tabを入力)する。

> cat sample.txt | /usr/bin/sed -e "s/ //g" | od -a
0000000    A   B   C   D  sp   E  sp   F  sp   G  nl

sedを使わずawkを使うのが良いかも。

> cat sample.txt | /usr/bin/awk 'gsub(/\t/,"")' | od -a
0000000    A   B   C   D  sp   E  sp   F  sp   G  nl