ログインしてさらにmixiを楽しもう

コメントを投稿して情報交換!
更新通知を受け取って、最新情報をゲット!

sed/awkコミュのsed/awk初体験のきっかけは?

  • mixiチェック
  • このエントリーをはてなブックマークに追加
使いはじめたきっかけとか、何歳のときに使いはじめたとか。

コメント(81)

ふゆねこさん、それってどうやってやってます?>Emacs
M-|とC-u M-|かな。
こむぎさん、それです。結果が1行だけならM-|で、置き換えていくならC-u M-|です。

しくじったらundoすればいいし、ミニバッファのヒストリ機能を使って編集して再実行できるし、便利すぎです。
そうかー。いいこと聞きました。Emacsの方がちょっとリード!?

MacだとKing's Editっていうのがjgawkとsedとの連携機能あって便利でしたね。
http://www.tb.adminet.co.jp/~naoki/mac/index.html
こむぎさん、Macのターミナルからクリップボードが使えるんですね。

ちょっと調べてみると、クリップボードにコピー&ペースとできるpbcopyとpbpasteというコマンドが。
便利っていうだけじゃなくてちょっと感激しました。
そうなんですよ。別トピには書きましたが、NeXTSTEP時代からあるようです。Mac以外の環境でも同種のソフトウェアがありますよ。よく、

pbpaste | uniq -c | sort -nr | awk -e 'print NR, $2, $1' | pbcopy

こんなんして集計モノをやったりします。

http://mixi.jp/view_bbs.pl?id=70802
はじめまして。私は学生時代はWin系だったので、若いころはSedなんてまったく知らんかったです。
会社入って、会社の先輩に教えてもらったのがきっかけですね。
ひたすらファイルをリネームしてたんですけど、sedを使えば一瞬…こりゃ凄いって思いましたよ。

(例)
#ls | sed -n 's/^\(.*\)/mv \1 \1.BAK/p' | sh
見たいな感じで.BAKってファイルへリネームする作業がワンコマンドで…。素晴らしいですよね。

shellとかでも多用しますけど、普段のオペレーションでかなり使いますね。数万本のshellを管理してるので、sed/awkは必要不可欠です^^;
なるほど。僕はいつもxargsを使ってました。
DOSでは、バッチファイルにリダイレクトして実行させてたり。

パイプラインのメカニズムを知る前は、ITA TOOLSに含まれているlsを実行させて、これの何が便利なの? と不思議に思っていました。dirの方が分かりやすくて便利じゃん、と。

http://retropc.net/x68000/software/tools/itatoolbox/
私の原点は「プログラミング言語AWK」の
便利な「一行野郎」たちですね。

cat text.csv | awk 'BEGIN{FS=","}{printf("%s,%s\n",$2,$1)}'

簡単な座標(ヘッポコCG)の入替ですが
Excelもない頃、これだけでも(TーT)でした。

winのバッチ系ではASCIIの256シリーズですね。
SOFTWARE TOOLSで、パッチからバッチを生成して起動するてことに
えらく感動した覚えがあります。
その技を初めて覚えたのは、SEDLECの後方参照の項でした。
確かに感動しました。
おお!入れ替わってる!と。Excelはありましたけど(笑)。

Excelでは、「行列を入れ替える」技を知って感動しました。
どうも、何かが入れ替わるのがポイントなようです(笑)。
どうも はじめまして。
"sed"あるかなーと思って探したら、見つけてしまいましたw

高校生の時に、ASCII SOFTWARE TOOLS 35だったか36とかいう
本を買ったのがきっかけで、高校生時代がピークでした。
当初は2行を1行にするのは、どうやるんだろ?とか思ってましたが、
段々分かるようになって、かなり遊んでました。

ところで、Windowsではどういった環境で使うのが普通なんですか?
別にDos画面でもいいのですが、便利なものがあるんでしょうか?
はじめまして。

私は Windows では Cygwin で使うこともあれば、DOS 画面で使うことも両方ありますね。
Cygwin に TeraTerm などから接続するのが UNIX っぽくって好きです。

最近では Windows 上に coLinux や VMWare Player を入れて、samba で Windows のディレクトリをマウントして、そこで使うケースが多いです。
(なんて面倒な…(苦笑)
>>ぶちょ〜さん
こんなん普通っぽいですよね。もっとスクリプト支援ツールがあったのですが名前が出てきません。

http://www.vector.co.jp/soft/win95/prog/se372506.html
http://homepage2.nifty.com/mozu/
http://www.longtail.co.jp/pck/main/
http://homepage1.nifty.com/kaityo/soft.html
http://hp.vector.co.jp/authors/VA021567/

clipsedは一時期使ってました。
使いこなしのコツは、とにかく思った次の瞬間に使えるように最速の起動手段を用意しておくことです。

フロントエンドに頼らず、標準入出力<>クリップボードブリッジを使ってクリップボード上のテキストを処理させてみるのもおすすめです。
http://mixi.jp/view_bbs.pl?id=70802

クリップボード>標準入力>sed>標準出力>クリップボード
という処理をするバッチファイルを書いて、何かのランチャから起動します。起動手段によっては、シームレスに使えます。

もしくは、エディタのsystem関数から使えるように設定するのもいいかもしれません。
Meadow/xyzzyだったらcall-process、shell-command、shell-command-on-region、サクラエディタだったらS_ExecCommand、K2EditorだったらProgramExecなんかで呼び出してやるのがいいかと思います。
エディタを起動するぐらいなら、エディタのマクロを使えばいいってことになっちゃうんで、やっぱりクリップボード上のテキストを処理するというのがおすすめです。

ファイラーというジャンルのソフトと組み合わせて使う方法もあります。カーソル位置をターゲットファイルに合わせた後、F5キーで指定のスクリプトにて処理する、などということが可能です。

>>Roccoさん
クラインの壷みたいですね(w
いい先輩に巡り会えてよかたですね。
自分は孤立無援の中、自力で開眼したので相当遅咲きです。
こむぎさん、どうも

そうですねぇ。クリップボードっていう手があるんですねぇ。

そういやぁ、昔は、困ると | miel とか、 > prn とか
やってましたが、懐かしいなぁ。

今度一通り遊んでみようと思います。ありがとうございます。
これまでgrepとviでなんとか仕事をこなしてきましたが、先月使い始めたawkのおかげで仕事が超はかどるようになりました。
awk万歳〜〜!!
5日前に始めた
リナックス環境でログインしたときに自動的に.bashrcを更新させようと
一生懸命vimスクリプトとシェルでやってたら
一応動くんだけど結構テンヤワンヤなスクリプトになっちゃって
友達にawk進められてやってみたら10行くらいでできちゃったと
awkSUGEEEEEEEEEEEEEEEEEEEEEEEEEEE
>>58
本題とずれるのですが、ログインするたびに~/.bashrcを書き換えるのは何のためでしょう?
>>59
パスを設定してるんだけど
パスの先のディレクトリ名が不定期に変わるから
結構大漁あって手で直すの麺土井
はじめまして。
今から10年以上前に小さな電算写植の会社で働き始めて、その職場で正規表現とsedを覚えました。まぁ、簡単な検索置換しかできませんが……。
現在は派遣でDTPをしておりまして、テキストの整理やタグ付けをsedでひっそりやっています。
QuarkXPressやIndesignのタグを使って組版している方はいらっしゃいませんか?
>>ニコさん
AppleScriptでそれっぽいことやっています。

以前、QuarkXPressの表組の列を入れ替えるのに、テキストボックスからタグ付きテキスト書き出して、jgawk+JGAwk Interfaceでやったことがあります。
サクっと入れ替えて返したら、どうやってやったのか不思議がられました。
# InDesignじゃ、そんなことする必要ありませんが……。
こむぎさん、レスありがとうございます。
AppleScriptはできません。
昔、Macでsedを使うようになった時に、
「sedによる編集&DTP実践自動処理テクニック」(技術評論社)を見ながら、
sedの連続処理に使ったことがあるだけですね。
Indesignは今年に入ってからCSを使い始めたばっかりで、
まだ表のことは分かりませんが、楽チンになってるのかな。
InDesignは楽ですよ。Excel並みとまではいきませんが、表組作成がかなりラクです。
スクリプトメニューが付いていて、自分で書いたスクリプトをInDesign上から実行できるのも気が利いてます。
AppleScriptから、do shell scriptというコマンドでsedやawkを使うこともできます。
つまり、InDesignとsedやawkとをAppleScript経由で連携可能です。
JavaScriptにも対応しているので、unicodeのこともありますし、実際はJavaScriptを使った方がいいんですけどね。
こんばんわ、皆様、はじめまして。

私は、パソコン通信全盛時代にログや自分の記事を自動で整形させたくて Awk の勉強を始めました。

当時マック用の Awk 処理系を山下巌さんがリリースされたこと、Awk を題材にしたテキスト整形の記事がネットワーク系月刊雑誌に掲載されたことが知るきっかけだったと思います。確か 92 年か 93 年の頃のことです。

当時取り組んだのは地元パソコン通信ホストのログの変換作業でした。

大手の商用パソコン通信ホストの NiftyServe には、ターミナルソフト、ログ変換、ログビューワの三点セットが揃っていて、なんとかこの仕組みを地元のパソコン通信ホストでも使えないかと考え、Awk にログの変換部分を担当させました。これは非常に上手くいきました。

この時の Awk の蓄積が礎となって社会人になってからも仕事でちょっとしたテキスト処理は Bourne shell + Awk で片付けるようになりました。入社して十年になりますがこの仕事のスタイルはかわっていません。

つい最近のことです。ちょっとしたデータ処理をする必要がありました。データ量は 35 日間、1 ファイル/日で合計 859,846 レコード。約 86 万のボリュームです。これも十数行のスクリプトを二つといくつかの一行野郎 (one-liner) で集計と検算と .csv ファイルの生成をこなしてくれました。

Awk の良さは、プログラミング言語 Awk でもエピローグに記されていますが、暗黙の処理のおかげで制御構造がプログラムから消えて実行の流れの見通しがよくなっていることにあるのでは? と思います。その心理的負担が軽くなっただけでも自分にとってはそれがとても有難いと思います。
私も草の根 BBS のログ集計プログラムを作りました。
ktxc.awk というものを ZOB Station BBS にアップして遊んでいたころを思い出します。

今もほとんどのテキスト処理を awk に任せてしまっていますが、脳力を使わずにキッチリとサクサクと書けるのがいいですね。
> Rocco さん

こんにちは&はじめまして。

BBS の通信ログは格好のプログラミングの素材ですね。

私は、地元の桃太郎ネット (絵里香K版) 用に三つ作りました。

1. momo2nif (NiftyServe 用に変換)
2. nasu2momo (メール/掲示板記事の下書きを絵里香用に変換)
3. pprint (テキスト整形)

http://iriyak.adam.ne.jp/freeware.html#gawk
http://iriyak.adam.ne.jp/arc/pprint/readme.txt

> 脳力を使わずにキッチリとサクサクと書ける

はい、私も『パターンとアクションの並びにこんなに表現力があるのか?!』と思いながらサクサクと awk を日々の仕事に役立てています。

唯一ひっかかる所があってそれは組み込み関数の引数の順序をいまだに暗記できないことでしょうか。

match(s, r), sub(r, t, s) は十年以上たってもいまだに man を見ないと順番を間違えてしまいます。。
どうも、はじめまして。
AWKを始めて使ったのは10年くらい前。Solarisのどっかのログの解析と集計を担当したのが最初です。

最近では"一行野郎"しか使ってませんが、とても便利に使ってます。
いーちゃんさん
やっぱり、皆さん何かのログ解析からスタートするんですね。
Solaris は awk を使うか nawk を使うかで挙動が変わる (awk が broken なだけですが) ので、最近 Solaris は使ってません。

私も 10 年以上たっても match(), substr() は覚えられません。当然、gensub(), asort() なんて、もってのほか。(苦笑)
> Rocco さん

> 私も 10 年以上たっても match(), substr() は覚えられません。

書き捨てがほとんどのスクリプトも match, substr だけは他スクリプトを grep RSTART とか grep RLENGTH で検索してコピー&ペーストしています。。
初めて使ったのは、93年ごろですかね。
新規にウチの会社のシステムを入れてもらったお客さん向けに、
他社データからのコンバートサービスなどというものをやっておりまして。
そのときに、多用してました。
バイナリーデータをダンプして、ダンプ後の文字列からデータを抜き出すなんてのが普通の手段でした。
ひどいときは、ある位置の文字をビット列に分解して、
その何ビット目を見ると、性別がわかるとか・・・
結構無茶してましたね(^^;)

ちなみに、perlは94年ぐらいから使うようになりました。
はじめまして。
初めて使ったのは???やっぱり93年ごろかなぁ。
月間アスキーで紹介されて「なんて楽チンなんだ」と
はまっていったような気がします。
はじめまして
今日が初体験です

awk の凄さにびっくりしている次第であります

日記にも書きましたので、ダメ出し等、諸先輩方のご指導を
賜りたくぞんんじます。
がると申します。
「一番初め」は、なんか記憶が混沌とした彼方にあるのですが(苦笑
最近またコンスタントに使い出したのは
・サーバ監視用
ですね。
てけとうなコマンドと組み合わせて「閾値以下ならOK、閾値を超えたらNG」とアラートを出す警告君です。

Perlと比較してものごっつ軽いので。いやまぁなんていうか便利なんですわw
はじめまして。

awkとの出会いは、以前、派遣(__請負)で仕事をしていたとき
引き継いだプログラムが、AIX上のawkでした。

テキストのログファイルをパースするものだったのですが
非常に冗長でawkらしくなかった?ので、全部作り直しました。
書き直し後で500行くらいだったと思います。

その後は、Cygwin上で少し使うくらいです。
皆さんログ解析とかでばっきばきに使ってらっしゃいますねー…。
自分はシステム管理とかの知識がなさ過ぎなのでうらやましいです。
sed/awkを王道の使い方してみたい…。

自分は大量データ処理するときに重宝してます。
データファイル名の整形だったり、何かコードを回した後の出力テキストファイルから必要な部分を引っ張ってきたりとかですかね。。

あとはエクセル代わりにつかったりとかです。
1990年くらいでしょうか。20代前半でした。
みなさんとご同様、BBSのログをいじくりまわすのに重宝してました。
ログ解析というより、整形や切り出しが多かったです。

当時の、80286やMC68000でawkの処理を書くとかなり遅かったので、
できる限りsedで記述するようにしてましたね(^^;;
(3秒→1秒になってもあんまりうれしくないけど、30分→10分になるとかなりうれしいので)

当時のsed scriptはHDDの片隅の残ってますが、今見てもほとんど意味がわからないです(を
# ま、半年前の自分は他人、とも言いますし。

・ちなみにperlはキライです(^^; どうにも性に合わなくて。
・最近は堕落してしまって、ちょっと複雑になるとrubyに逃げてますorz
はじめまして。1995年くらいに,福井玲先生の「コンピュータ言語学」という授業で,少し習いました。ほんの簡単なスクリプトを書いて,文字列の置換などをやったりしましたが,あまり使わないので,忘れてしまいました。また,ここで勉強させていただきたいと思います。よろしくお願いします。
きっかけは、20代の頃、客先のUNIX使いが、ワンコマンドでテキストを、ばばばっと処理していたのに感動しました。今では、Perlしか使ってませんが、gawk for Windowsを見つけてしまい、うれしくなってしまいました。awkは良い言語ですね。
そういえば最近はWindowsでもgnupackでインストールなしに楽にsedやawkが使える環境になり、素晴しいことです。
私には、2012年になってAWKブームが到来しました(AWKの名前は知ってたけど、使ってみたのはこのときが初)。もはやAWKなしのシステム運用は考えられません。

ログインすると、残り42件のコメントが見れるよ

mixiユーザー
ログインしてコメントしよう!

sed/awk 更新情報

sed/awkのメンバーはこんなコミュニティにも参加しています

星印の数は、共通して参加しているメンバーが多いほど増えます。

人気コミュニティランキング