awkでのgsubを使った文字列置換(正規表現)

公開日: : awk, bash, 正規表現 , , , , , ,

まえおき

bashなどのシェルスクリプトで、lsした結果とかをつかってファイルを集計したいときってありますよね。

そのときに、同じ種類のファイルをまとめて、ユニークにしたいときとかってありますよね(ソースはわい)

変数の置換(${AAA/BEF/AFT})でもできたりするんですが、より汎用的にやりたいので、今回はawkを使って実装したいとおもいますよ。

awkは慣れないとぶっちゃけ使いづらいんですが、パターンさえおぼえればわりと使えるので、使い方のひとつとして特にインフラ系を取り扱うエンジニアは知っておいたほうがよいかと思いますです。

準備

適当な場所にファイルをつくります。

今回の例は、ログファイルてきなものが分割されて出力されている環境で、ログファイルが何種類でているかを集計したいというタスクをなんとかするやつです。

000の部分は000-999くらいの範囲でスケールしても大丈夫なようにつくります。

作成

まずはls

こんなかんじでls結果が表示されます。

これを加工していきます。

awkを適用

とりあえず、枠だけつくります。

入ったものをそのまま出すだけのawkです。

数字の部分を置換

printの前に、0-9の繰り返し+"."にマッチしたら、"."に置換する処理を組み込みました。

数字の部分が消えて、同じ種類のログをまとめられるようになりました。

わざわざ、ドットまで置換対象にしている理由は、ログ名称に数値が含まれる場合はふつうにあるので、その部分を消さないようにするためです。

場合によっては、.txtまでを置換対象にしてもいいですし、そのあたりは自由にやるといいともいます。

集計する

あとは、ソートしてユニークをとれば完了です。

ソートしているのは、ファイル名の順番がぐちゃぐちゃでも対応できるようにしているだけです。

あとは、wc -lとかしてカウントとってもいいですし、なんか別なことしてもいいと思います。

awk内で集計しちゃう方法もあるのですが、配列つかったりする必要があって面倒なので今回はやってないです。

タイムスタンプの最初と最後出したいとか、細かい集計要件があればawkの中で集計するほうが楽です。

今回は簡単にやりたかったので、そのあたりは別記事でやろうかとおもいます。(気が向いたとき)

ということでおわります。

スポンサードリンク

関連記事

no image

[bash] grep・egrepコマンド

基本パターン ファイル中の文字列を検索 $ grep '[検索したい文字列]' 検索対象ファ

記事を読む

no image

[bash] bash入門1

こんにちは、今回はbash入門ということで、全く知らない状態からbashを触ってみます。 一応

記事を読む

no image

bashで並列処理する方法(xargs)

並列処理とは 通常、意識せずにプログラムを書くと、大体の場合はシングルプロセスの動作をするプ

記事を読む

no image

[bash] cronでログインシェル(.bash_profile)の環境変数などを読み込ませる

こんにちは、今回もメモ。 cronでシェルを実行する際、普通にコマンドを書くと、ログインシェル

記事を読む

no image

[bash] 文字列の分割(split処理)

bashで文字列をsplitする方法を紹介します。 例えば、以下の文字列をカンマ区切りでspl

記事を読む

no image

[cron] dateコマンドをcronに書くときの注意点

dateコマンドの引数をcronにそのまま書くと怒られることへのメモ。 そのまま、

記事を読む

no image

[bash] 文字列長を調べる

bashで変数に入っている文字列長を調べるときは以下のようにする。 ${#変数名} ●実

記事を読む

no image

[bash] ファイルの中身を1行ずつ処理するループ処理(while文)

ファイルの中身を1行ずつ処理したい場合の処理です。 ファイル名を引数にとります。 #

記事を読む

no image

[bash] if文の書き方

if文の書き方をメモります。 ●構文 ※カッコ([])と条件式の間のスペースが無いとエラーに

記事を読む

no image

[bash] bash入門2 - viの使い方・代表的なコマンド一覧

こんにちは、今回はbash入門2としてviエディタの使い方を説明します。 bashの事始めはこ

記事を読む

スポンサードリンク

Message

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

スポンサードリンク

no image
CentOSにdockerをインストールしてみた

前置き dockerをcentos7にインストールしてみました

no image
awkでのgsubを使った文字列置換(正規表現)

まえおき bashなどのシェルスクリプトで、lsした結果とかを

no image
bashで並列処理する方法(xargs)

並列処理とは 通常、意識せずにプログラムを書くと、大体の場合は

no image
AWS Redshiftの使用ストレージ容量をクエリで調べる方法

用途 AWS Redshfitのコンソールを見れば、使用中のス

no image
pythonでstorage transfer serviceを使ってみた。

準備 pythonのインストールとかする。 このあたり。

→もっと見る

  • 2024年12月
     1
    2345678
    9101112131415
    16171819202122
    23242526272829
    3031  
  • 2024年12月
     1
    2345678
    9101112131415
    16171819202122
    23242526272829
    3031  
PAGE TOP ↑