0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

AWK入門ガイド

Posted at

Group791.png

Leapcell: Webホスティング、非同期タスク、Redis向け次世代サーバレスプラットフォーム

AWK入門ガイド

I. 基本概念

AWKはLinuxシステムに組み込まれたテキスト処理ツールで、構造化テキスト(ログ、CSVファイルなど)の処理に特化しています。ファイルを1行ずつ読み込み、フィールド単位でデータを処理し、簡単なプログラミングロジックをサポートしています。

II. 基本構文

1. 基本フォーマット

awk [オプション] 'アクション' ファイル名

2. 最もシンプルな例

# ファイル全体の内容を出力する
awk '{print $0}' demo.txt

# パイプを使って標準入力を処理する
echo 'this is a test' | awk '{print $0}'

3. フィールド処理

  • $1: 1番目のフィールド
  • $2: 2番目のフィールド
  • $0: 全行
  • NF: 現在の行のフィールド数
  • $NF: 最後のフィールド
# 3番目のフィールドを抽出する
echo 'this is a test' | awk '{print $3}'  # 出力: a

# 最後から2番目のフィールドを抽出する
echo 'a,b,c,d' | awk -F ',' '{print $(NF-1)}'  # 出力: c

III. コア機能

1. フィールド区切り文字

# コロンを区切り文字として指定する
awk -F ':' '{print $1}' /etc/passwd

2. 組み込み変数

変数名 説明
NR 現在の行番号 awk '{print NR}' file
FS 入力フィールド区切り文字(デフォルトは空白) awk -v FS=: '{print $1}'
OFS 出力フィールド区切り文字(デフォルトは空白) awk -v OFS=, '{print $1,$2}'
FILENAME 現在のファイル名 awk '{print FILENAME}' file

IV. 高度な操作

1. 条件フィルタリング

# 正規表現マッチ: "usr"を含む行を出力する
awk -F ':' '/usr/ {print $1}' /etc/passwd

# 数値比較: 3行目以降の内容を出力する
awk -F ':' 'NR > 3 {print $1}' /etc/passwd

# 複合条件
awk -F ':' '$1 == "root" || $3 > 1000' /etc/passwd

2. 組み込み関数

関数名 機能
toupper() 文字列を大文字に変換する awk '{print toupper($1)}'
length() 文字列の長さを返す awk '{print length($1)}'
substr() 部分文字列を抽出する awk '{print substr($1,3,5)}'
rand() 乱数を生成する awk '{print int(rand()*100)}'

V. 制御文

1. 1行条件

# 奇数行を処理する
awk 'NR % 2 == 1 {print "Line", NR}' file

# フィールド比較
awk -F ':' '$3 > 1000 {print $1}' /etc/passwd

2. 多行ロジック

awk -F ':' '{
  if ($1 > "m") {
    print "High:", $1
  } else {
    print "Low:", $1
  }
}' /etc/passwd

VI. 実践的なヒント

  • フォーマット出力: printの代わりにprintfを使用する
    awk -F ':' '{printf "%-10s %s\n", $1, $3}' /etc/passwd
    
  • 大容量ファイル処理: メモリ効率の高い1行ずつ処理
  • ツール連携: grep/sedと組み合わせる

VII. クイックリファレンス

# よく使うコマンドの組み合わせ
awk -F ':' '/^root/ {print $1}'  # rootで始まる行
awk -F ':' '!/nologin/ {print $1}'  # nologinを含まない行
awk -F ':' '$3 ~ /[0-9]{4}/'  # 4桁の数字を含むフィールド

最適化メモ:

  1. 階層的な見出し構造
  2. 変数/関数の表による明瞭化
  3. コードブロックと出力結果の対比
  4. 実践的なヒントとクイックリファレンスの追加
  5. 論理的な順序による学習曲線の向上
  6. 適切なスペースとインデントによる読みやすさの向上

Leapcell: Webホスティング、非同期タスク、Redis向け次世代サーバレスプラットフォーム

最後に、おすすめのデプロイプラットフォームを紹介します:Leapcell

barndpic.png

1. 多言語対応

  • JavaScript、Python、Go、Rustで開発可能

2. 無制限プロジェクトの無料デプロイ

  • 使用量課金のみ - リクエストなし=無料

3. 圧倒的なコスト効率

  • アイドル時の課金なし
  • 例: 平均レスポンス時間60msで694万リクエストに$25

4. 開発者向けの洗練された体験

  • 直感的なUIによる簡単なセットアップ
  • 完全自動化されたCI/CDパイプラインとGitOps連携
  • 実行可能な洞察を得るためのリアルタイムメトリクスとログ

5. 簡単なスケーラビリティと高性能

  • 高い同時処理をサポートする自動スケーリング
  • オペレーションの手間なし - 開発に集中できる

Frame3-withpadding2x.png

ドキュメントを確認!

LeapcellのTwitter: https://x.com/LeapcellHQ

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?