--
    --.--

    スポンサーサイト

    上記の広告は1ヶ月以上更新のないブログに表示されています。
    新しい記事を書く事で広告が消せます。

    このエントリーをはてなブックマークに追加
    2013
    09.19

    gnu-sedを入れてみた

    Category: Mac   Tags:sedgnu-sedgsed改行削除
    UNIXコマンドのsedの使い方を勉強中。

    テキストファイルを行単位で読み込んで
    文字列の置換や削除といった処理をしてくれるコマンドなんですが
    なかなか思ったように動かせない…
    難しいですね(^-^;)


    標準でもsedは入ってるんですが、
    私の用途では1行あたりのバイト数制限にひっかかってしまい、仕事になりません(汗
    参考:sed, a stream editor: 5. GNU sedの制限と制限されていないこと

    そこで、制限が緩くより高機能という噂のgnu-sedHomebrewを使って入れてみました。

    brew install gnu-sed

    これだけでインストール完了!

    gsed ホニャララ

    と入力すると、gnu-sedで処理できるようになります^-^
    これ、いいかも♪

    sedでテキストファイルの改行の削除をしてみる


    まずはMacにもともと入ってるsedで挑戦。

    / 区切り(別の文字でも可能)
    s 置換
    \n 改行
    g 最後まで何度でも

    ということで…とりあえず実行。

    sed s/\n//g inputfile  # 正しくない

    これでできると思った私は初心者。できないんですね(汗

    調べてみると、sedはそもそも行単位でテキスト処理するもの。
    改行の操作は行をまたいでの処理になるので
    ループで全ての行を取り込んでから処理する必要があるそうです。

    sed ':loop; N; $!b loop; s/\//g' inputfile # Macでは動かない

    これで処理できるハズ…なのに、できない(;_;)
    原因:Macのsedでは\nが改行として処理されない。


    そこで、gnu-sedでやってみると
    gsed ':loop; N; $!b loop; s/\n//g' inputfile

    できたー!
    改行が取れた、ひたすら長いテキストが表示されます♪


    ファイル出力したい時はこんな感じで
    gsed ':loop; N; $!b loop; ;s/\n//g' inputfile > outputfile



    ただ、「改行を取り除く」という処理ならsedよりtrコマンドを使った方が簡単です。
    tr -d '\n' < filename


    以上、ほとんど以下の受け売りでした^-^;
    参考:改行を置換したい | skmks
    関連記事

    このエントリーをはてなブックマークに追加
    トラックバックURL
    http://w6o6n.blog.fc2.com/tb.php/61-077036ed
    トラックバック
    コメント
    管理者にだけ表示を許可する
     
    上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。