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

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

回答の条件
  • URL必須
  • 1人2回まで
  • 登録:
  • 終了:--
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

回答3件)

id:jouno No.1

回答回数280ベストアンサー獲得回数0

ポイント20pt

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


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

id:kaiketsu

うまくいかないのです。

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

回答回数55ベストアンサー獲得回数5

ポイント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

回答回数9ベストアンサー獲得回数0

ポイント20pt

cygwin上での確認しました。

sed ’s/¥t/,/g’

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

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

id:kaiketsu

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

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

2005/08/23 19:06:56

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

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

トラックバック

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

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

回答リクエストを送信したユーザーはいません