タグ

awkに関するyutamotyのブックマーク (9)

  • 大きなテキストファイルをawkで処理するときにcatで投げ込むのと、ファイル読み込みするのどっちが速いか比較 - カメニッキ

    追記が増えたので整理 経緯 2.5GBのテキストファイルを加工する必要があり、①vimで開いて加工→vim死亡②sublime textで開いて加工→sublime text死亡となったため、awkを用いて以下の様なコマンドを実行した。 $ cat sample.txt | awk '$5 ~ /((26|27|28|29|30)\/Jun|(01|02|03)\/Jul)/{ print }' > result.txt すると 「catいらなくね?」と指摘 さらにMATSUMOTO, Ryosuke (@matsumotory) | Twitter < 「キャッシュに入れて高速化してるんかと思った」 とコメントをもらいました。ので、どっちが速いかの検証です。 注意 加工の目的はログファイルからある期間だけの行を抜き取りたい 正規表現がいけてないのは気にしない 比較 awkにファイル指定す

    大きなテキストファイルをawkで処理するときにcatで投げ込むのと、ファイル読み込みするのどっちが速いか比較 - カメニッキ
  • 簡単で、奥深くて、超便利! LLの元祖「AWK」にさわってみよう

    編注1:「シェル芸」とは、UNIXシェル(主にbash)のワンライナーを駆使して文字列加工を自由自在に操ることです。また、そのような能力をもつ人をシェル芸人と呼びます。 パターンとアクション AWKはパターンとアクションを組み合わせるプログラム言語です。日語で「もし○○だったら、○○をする」という文章のうち、「もし○○だったら」という部分がパターンであり、「○○する」という部分がアクションです注1。このようにパターンとアクションで構成されるAWKの基文法は直感的であるため、様々な機会で用いられます。これをAWKスクリプトで記述すると以下のようになります。 さて、「パターン」という名前から「正規表現にマッチする」ようなイメージを持たれるかもしれませんが、AWKのパターンは「条件式」そのものであり、その条件式の戻り値による「真偽」にしたがいアクションが実行されます。今回はこのパターンの真偽

    簡単で、奥深くて、超便利! LLの元祖「AWK」にさわってみよう
  • シェルスクリプトで数字3桁をカンマ区切りにする

    bashなどのシェルスクリプトで数字を3桁のカンマ区切りにしようとすると結構めんどくさかったのでメモ。 printfの%dを%’d(シングルクォートを間に入れる)にするのはすぐに行き着くけど、それをawkで使おうとするとめちゃ厄介。シングルクォートの中にシングルクォートが入らないから。シングルクォートを\047でエスケープするのがみそ。 printf "%'d\n" "1000000" or awk '{printf"%\047d\n",$1}' <<< "1000000"

    シェルスクリプトで数字3桁をカンマ区切りにする
  • AWK リファレンス | UNIX & Linux コマンド・シェルスクリプト リファレンス

    AWK リファレンス AWK とは? AWK はフィルタリングによく使用されるコマンドであるが、同様にしてフィルタリングに使用される grep や cut と決定的に違うところは、AWK 自体が独立した一つのスクリプト言語であるということだ。つまり、AWK は正確にはコマンドではなく、AWK スクリプト・インタプリタである。 例えばテキストから 1 フィールド目を抽出する場合には、awk '{ print $1 }' と実行するが、ここで引数として AWK に渡している { print $1 } の部分が AWK スクリプトのソースになっている。 ちなみにこの { print $1 } は「全ての行に関して 1 フィールド目を標準出力に出力せよ」という意味になる。 この AWK は Perl などといった他のスクリプト言語ほど高機能ではないが、単一のテキストファイルや標準入力からのテキスト

    AWK リファレンス | UNIX & Linux コマンド・シェルスクリプト リファレンス
  • データファイル処理に便利なUNIXコマンド

    データファイル処理に便利なUNIXコマンド (一部工事中、順次拡張予定) ここでは、データファイル処理に便利なUNIXコマンドの紹介を行います。 使用目的から探す - 実例集 - 複数のファイルをくっつけたい あるファイルの後ろに次のファイルを入れる場合 cat 単純にファイルの最初から順に行同士をくっつけてしまう場合 paste 特定の行を仲立ちとしてファイルをくっつける場合 join ファイルのある行を読み飛ばしたい awk ファイルの空行を読み飛ばしたい awk ファイルのある列とある列を用いて演算を行いたい awk ファイルの特定の文字を別の文字に変換(置換)したい sed データのフォーマットを揃えたい awk 1を01のように、頭にゼロをつけたい(ゼロプディング) 0.035を3.5E-2のように、指数表示にしたい、など。 ファイル名から、ディレクトリ名あるいは拡張子を取り除き

  • クロス集計をBash(とawk)だけで実装した話

    OSC・シェルのプロが語る『make を使ったデータ処理。』 【make 教】 - OSC2015 Tokyo/Spring 発表資料

    クロス集計をBash(とawk)だけで実装した話
  • Tailしながらsed,awk等をノーバッファで快適に使う。 - 自分の仕事を憎むには人生は余りにも短い

    tail -f した結果をsed,awkしてるとバッファリングされてしまい、ぬるぬる感がなくなっていやですよね。 これは各プロセスがバッファするためなので、バッファしないように指定してあげましょう。 各コマンドのノーバッファの設定は以下の通り。 awk {fflush()} grep --line-buffered sed --unbuffered なのでこんなかんじで快適。 tail -f app.log | grep --line-buffered Grapon | sed --unbuffered -e "s/hoge/hage/" | awk -f '{print $2}{fflush()}'

    Tailしながらsed,awk等をノーバッファで快適に使う。 - 自分の仕事を憎むには人生は余りにも短い
  • Unix :: コマンド / awk [Tipsというかメモ]

    2行目と3行目を表示する (パイプ経由) % cat hoge.txt | awk 'NR==2,NR==3 { print }' 2行目と3行目を表示する (ファイルから読み込む) % awk 'NR==2,NR==3 { print }' < hoge.txt 条件分岐 (if else) % grep 'needle' hoge.txt \ | awk '{if($2==OK) ok++; else ng++}; END {print ok; print ng}' 第2フィールドの「OK」をカウントし、同時に「OK以外」もカウントする。 演算子 && || % some_command | awk '{if($1==A && $2==B) print}' % some_command | awk '{if($1==A || $2==B) print}' 第2フィールドが「1以上」の行

  • プログラム言語 awk Linux/Unix利用者向け一行コマンド

    1行プログラミング awk でデータの単純なフォーマット変換することを目的としています。 まず、次のようなデータ(/tmp/a とします)に対して、処理を行うことを考えます。 1 2 3 4 -5 6 7 8 0 9 10 113 入力行の総数を印字する 入力行の総数を出力します(他の方法 cat /tmp/a | wc)。 cat /tmp/a | awk 'END {print NR }' 実行結果 3 N行目の入力行を印字する 3行目の入力行を出力します(他の方法 cat /tmp/a | head -3 | tail -1)。 cat /tmp/a | awk 'NR==3' 実行結果 9 10 113 N個より多い欄を持つすべての入力行を印字する 1 行に3 個以上のデータが記述されている行をすべて出力する。 % cat /tmp/a | awk 'NF > 3 {print}'

    プログラム言語 awk Linux/Unix利用者向け一行コマンド
  • 1