タグ

awkとqiitaに関するishideoのブックマーク (16)

  • パイプに関係するさまざまなバッファ、ちゃんと意識していますか? - Qiita

    はじめに コマンドをパイプでつなげた時、各コマンドの間にはいくつかのバッファが存在します。そのバッファについてちゃんと意識しているでしょうか? バッファの存在によって各コマンドの実行には分かりづらい変化があります。そのバッファを知らないと罠にハマってしまう・・・かもしれません。 プロセス間のパイプ通信のバッファ まずプロセス間のパイプ通信に存在しているバッファです。多くのコマンドは行単位でデータを処理しますが、一般的にパイプでつなげた各コマンドはそれぞれ処理速度が異なります。処理がすぐに終わるコマンドもあれば時間がかかるコマンドもあります。各コマンドは並列で動作可能ですが必ずしも並列で動作するわけではありません。 一般論としてパイプライン全体の処理にかかる実時間はパイプでつながったコマンドの中で一番遅いコマンドに足を引っ張られます。いくら並列で動作可能と言ってもデータが到着しなければ処理す

    パイプに関係するさまざまなバッファ、ちゃんと意識していますか? - Qiita
  • jqコマンドのストリーミング処理 (--stream) をパイプでawkにつなぐ方法のまとめ - Qiita

    はじめに 誰もが知っている通り jq コマンドは JSON データを処理するためのフィルタコマンドです。awk コマンドと同じように抽出や編集といったデータ処理を行える専用の言語を備えています。jq コマンドは巨大な JSON データをストリーミングで処理することができる --stream オプションを持っており、データの完全な取得を待たずにデータを受け取りながら処理することが出来ます。しかしその使い方は難しくあまり解説されていません。そこでどのように使うと良いのかを調べてまとめました。 ストリーミング形式の出力 (--stream) まず次のような JSON データを用意しました。 [ {"name": "apple", "price": 210, "count": 10 }, {"name": "banana", "price": 140, "count": 15 }, {"name"

    jqコマンドのストリーミング処理 (--stream) をパイプでawkにつなぐ方法のまとめ - Qiita
  • awk とシェルとの値の受け渡しについて - Qiita

    概要 awk への値の受け渡しの記事はよく見かけるが awk からシェルへの値の受け渡しの記事が少ないのでまとめてみた。 シェルから awk への値の受け渡し awk への値の受け渡しは -v オプションを使うと覚えておけば間違いない。 #!/bin/sh # -v オプションで値を手入力 echo | awk -v foo=before '{print foo}' # 実行結果: before # 後ろには書けない echo | awk '{print foo}' -v foo=after # 実行結果: awk: fatal: cannot open file `-v' for reading (No such file or directory) # -v 無しで渡す方法もあるが、BEGINブロックで値を参照できない echo | awk 'BEGIN{print foo} {pri

    awk とシェルとの値の受け渡しについて - Qiita
  • awk(1) 小技 - Qiita

    色々と便利な awk(1) のちょっとした小技を紹介してみます。 system() を利用する際の注意 awk(1) の中で外部コマンドを実行する場合は組み込み関数 system() が利用できますが、この関数を利用して外部コマンドを実行すると入出力 stream がオープンされるので、ファイルディスクリプタが消費されてしまいます。 ですので awk(1) 内で何度も system() を実行すると、オープンできるディスクリプタの上限を超過してしまい、 awk(1) の実行が中断されてしまう可能性があります。 ですので、 close() を利用して system() がオープンした stream を閉じれば良いのですが、 awk(1) の system() では stream を明示的に扱いません。その様な場合は system() で実行したコマンドを close() の引数で指定する事で

    awk(1) 小技 - Qiita
  • 実用 awk ワンライナー - Qiita

    AWK(オーク)を使ったワンライナーはとても強力で簡便なテキスト処理を可能とします.最近は,PerlRuby でもほとんど同様のことができ,取って代わられて久しいですが未だにその枯れ力といいますか,汎用性に関しては群を抜いているように思います. また,awk とは AWK の処理系のことを指しています. 一般に元祖 awk と呼ばれる処理系が最初と言われています.実際はわかりませんが,絶滅種の如く見かけることはなく,その文法などに関しても関数定義などの基的な部分が抜けていたので New awk(通称,nawk)として多少の文法が追加された処理系が,その流派を継いでいます. そして GNU プロジェクトによって大幅強化された awk が gawk です. よく見かけるのは,gawk か nawk のどっちかだと思います. 現在,Linux では標準で gawk が,OS X では 2

    実用 awk ワンライナー - Qiita
  • 生データファイル処理のための基本的なUnixコマンドラインツールまとめ - Qiita

    データ分析業務において、データベースなどに登録されている場合は簡単に行えるようなデータの操作を、生データファイルに対して行いたい時がたびたび発生します。 今回は、そんな時に私がよく使っている、生データファイルを処理するための基的なコマンドラインツールについて、その概要と簡単な使い方を紹介します。 cat ファイル内容を表示する ファイルの内容を標準出力に表示するコマンドです。 $ cat sample1.csv 都道府県名,人口(人),面積(平方km) 茨城県,2969770,6095.72 栃木県,2007683,6408.28 群馬県,2008068,6362.33 埼玉県,7194556,3798.13 千葉県,6216289,5156.7 東京都,13159388,2187.5 神奈川県,9048331,2415.86 head ファイルの先頭数行を表示する ファイルを先頭から指

    生データファイル処理のための基本的なUnixコマンドラインツールまとめ - Qiita
  • awkの使いかた - Qiita

    的にワンライナーで使うことを想定してメモ。(長くなる場合はスクリプトの形で記載する。) awk の良いところ Linuxでテキストデータをちゃちゃっと処理できる。 ほとんどのLinux OSで標準で使える(プレインストールされているので,自分でインストールする必要がない)。 WindowsのMingwや,Macでも標準で装備されているので互換性や移植性が高い(スクリプトだけコピーして持っていれば,だいたいどこでも使える)。 書き方は,Cと似ているので覚えやすい。 コンパイルが不要。 codingが簡単なので,作業時間が短く済む。 基 awkはテキストファイルを,行ごとに処理を行う。 それぞれの要素(列)に対しての処理をcodingすることが基となる。 それぞれの要素に関しては,以下で紹介するような組み込み変数で指定する。 例えば,テキストファイル内の1列目の全数値データに対して,2

    awkの使いかた - Qiita
  • URLエンコード・デコードする - Qiita

    Webサーバーログ解析で使いたかった Webサーバーのログを見ていると、検索ページからジャンプしてきている形跡があった。しかし、検索キーワードはURLエンコードされた状態であり、デコードしないとわからない。果たしてどんなキーワードなのか興味があった。 そこで、FreeBSDのportsに収録されているurlendecというプログラムをサクっとインストールしようとしたら…… # cd /usr/ports/net/urlendec # make install ===> urlendec-1.0 is only for i386, while you are running amd64. *** [install] Error code 1 Stop in /usr/ports/net/urlendec. # これだから、POSIX準拠でないコマンドは信用ならんのじゃ!!! しょーがないので

    URLエンコード・デコードする - Qiita
  • python ワンライナーに挑戦 〜 初心者のお勉強 m(_ _)m - Qiita

    bc,tac,grep,sed,awk を python ワンライナーにしてみました。 python に慣れる目的で、日常的に使えたらいいと思ったのがモチベーションです。 しかし、実際に使っているのは「電卓(簡単な計算)」だけです… 以下、"file1.txt" は任意のテキストファイルです。 1) 電卓(簡単な計算) ● bc

    python ワンライナーに挑戦 〜 初心者のお勉強 m(_ _)m - Qiita
  • awkでコマンドの実行結果を変数に入れる方法 - Qiita

    Register as a new user and use Qiita more conveniently You get articles that match your needsYou can efficiently read back useful informationYou can use dark themeWhat you can do with signing up

    awkでコマンドの実行結果を変数に入れる方法 - Qiita
  • psコマンドからプロセスIDを取得する - Qiita

    Register as a new user and use Qiita more conveniently You get articles that match your needsYou can efficiently read back useful informationYou can use dark themeWhat you can do with signing up

    psコマンドからプロセスIDを取得する - Qiita
  • シェルスクリプトを何万倍も遅くしないためには —— ループせずフィルタしよう - Qiita

    🐚 🐚 🐚 🐚 シェルスクリプトは遅すぎて使えない 普通の「速い言語」より何百、いや、何千倍も遅い 他のプログラミング言語を経験してからシェルスクリプトに入門し、このような感想を持つ方も多いのではないでしょうか。 実際、こういったことは往々にして起こり得ますので、「速い言語」を使うべきか否か見極めることは大事だと思います。 しかし、当にシェルスクリプトというのは、そこまで遅いのでしょうか? データ量が多い場合は常に最初から「速い言語」で書いた方がよいのでしょうか? 実は、そうとも限りません。 シェルスクリプトにはシェルスクリプトなりの「速い書き方」があります。 この「速い書き方」で処理できる問題に関しては、シェルスクリプトは「速い言語」なのです。 では、「速い書き方」とは何かというと、端的には「たくさん繰り返されるループはシェルスクリプトで記述しない」ことです。 以下でこれを説明

    シェルスクリプトを何万倍も遅くしないためには —— ループせずフィルタしよう - Qiita
  • Ansibleでファイルの行を書き換える3つの方法 - Qiita

    - name: "設定の修正(1)" lineinfile: >- dest='/path/to/file/' state=present backrefs=yes regexp='^#?\s*ServerTokens' line='ServerTokens Prod' dest: 書き換える対象のファイル state=present: 「この行があるべき」ことを示す backrefs=yes: 正規表現内のバックスラッシュが使えるように regexp: 書き換えたい行にマッチする正規表現 line: 書き換えたい内容 他にもオプションがいろいろあるので、詳細は公式ドキュメントをどうぞ。 ひとつのファイル内で複数箇所を書き換える場合は、with_itemsと組み合わせます。 - name: "設定の修正(2)" lineinfile: >- dest='/path/to/file' sta

    Ansibleでファイルの行を書き換える3つの方法 - Qiita
  • substr関数 - Qiita

    0文字目から1文字切り出す # echo "123456" | awk '{print substr($0,0,1)}' 1 3文字目から2文字切り出す # echo "123456" | awk '{print substr($0,3,2)}' 34 2文字目から文字列の最後まで切り出す # echo "123456" | awk '{print substr($0,2,length($0))}' 23456

    substr関数 - Qiita
  • ‪データの集計ではsort | uniq -c をシェル芸で良く使うけど大量データには向かないのでawkでもっと高速な処理を書く‬ - Qiita

    ‪データの集計ではsort | uniq -c をシェル芸で良く使うけど大量データには向かないのでawkでもっと高速な処理を書く‬ShellScriptAWK sort | uniq -c という操作は、データの集合から件数を数えるのによく使いますね。 uniq はデータから重複データを取り除いたり、重複したデータだけを取り出したり、あるいは件数を数える、という処理ができるコマンドですが、実行時の前提条件として予めソートされたデータが必要です。だから先に sort しています。 しかしデータの母集団が大きいと sort の処理時間がボトルネックとなって、数分単位のオーダーで処理待ちが起きることがあります。そのような場合に sort | uniq -c とは違う方法で集計を行えば、処理速度を大幅に改善できる可能性があります。 例:1から1000までのランダムな値の集合1億件について、値ごとの

    ‪データの集計ではsort | uniq -c をシェル芸で良く使うけど大量データには向かないのでawkでもっと高速な処理を書く‬ - Qiita
  • awk内でシングルコーテーションを使いたい - Qiita

    mysql> desc user_data; +---------+-----------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +---------+-----------+------+-----+---------+----------------+ | id | int(11) | NO | PRI | NULL | auto_increment | | user_id | int(11) | YES | | NULL | | | data | int(11) | YES | | NULL | | | detail | char(255) | YES | | NULL | | +---------+-----------+------+----

    awk内でシングルコーテーションを使いたい - Qiita
  • 1