perl の タブをカンマに変更は簡単に

s/¥t/,/;
でできます。これと同じことを sed で書きたいのですが、どうするといいのでしょうか?

回答の条件
  • URL必須
  • 1人2回まで
  • 登録:2005/08/23 17:36:57
  • 終了:--

回答(3件)

id:jouno No.1

jouno回答回数280ベストアンサー獲得回数02005/08/23 18:39:39

ポイント20pt

置換だけなら これでいいのでは。


sed ”s/¥t/,/g” filename

id:kaiketsu

うまくいかないのです。

2005/08/23 19:05:48
id:ton-boo No.2

ton-boo回答回数55ベストアンサー獲得回数52005/08/23 18:43:27

ポイント20pt

URLはダミーです。


・方法その1 スクリプトをファイルで与える

s/(タブ)/,/g

という内容の command.sed ファイルを作成し、sed -f command.sed file.tsv > file.csv とする。

(タブ)と書いてあるところは本当にタブを入力します。


・方法その2 ”l”コマンドを使う

ぜんぜんスマートではありませんが、タブを一度可視化します。


sed -ne ’l’ file.tsv | sed -e ’s/¥¥t/,/g’ | sed -e ’s/¥$$//’ > file.csv


こんな感じで、手元のFreeBSD5.4では(一応)できました。


’l’コマンドはタブを含む非印字文字を可視化するものです。元々のファイルに変なコードが紛れていると変な結果をはき出すかも知れませんのでご注意を。


それにしても、sedで¥tが使えないのは痛いですね……


GNU sedでは、バージョンとコンパイルオプション次第でもっと普通にできるかも知れませんが、私はよく知りません。

id:kaiketsu

以外と面倒なようですね。

2005/08/23 19:06:16
id:joynya No.3

joynya回答回数9ベストアンサー獲得回数02005/08/23 18:44:40

ポイント20pt

cygwin上での確認しました。

sed ’s/¥t/,/g’

で置換できます。hoge.txtを処理する場合は

sed ’s/¥t/,/g’ hoge.txt

id:kaiketsu

コンパイルオプションの設定がおかしいのでしょうか?

もう一度しらべてみます。

2005/08/23 19:06:56

コメントはまだありません

この質問への反応(ブックマークコメント)

トラックバック

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません