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桁の数字を含むフィールド
最適化メモ:
- 階層的な見出し構造
- 変数/関数の表による明瞭化
- コードブロックと出力結果の対比
- 実践的なヒントとクイックリファレンスの追加
- 論理的な順序による学習曲線の向上
- 適切なスペースとインデントによる読みやすさの向上
Leapcell: Webホスティング、非同期タスク、Redis向け次世代サーバレスプラットフォーム
最後に、おすすめのデプロイプラットフォームを紹介します:Leapcell
1. 多言語対応
- JavaScript、Python、Go、Rustで開発可能
2. 無制限プロジェクトの無料デプロイ
- 使用量課金のみ - リクエストなし=無料
3. 圧倒的なコスト効率
- アイドル時の課金なし
- 例: 平均レスポンス時間60msで694万リクエストに$25
4. 開発者向けの洗練された体験
- 直感的なUIによる簡単なセットアップ
- 完全自動化されたCI/CDパイプラインとGitOps連携
- 実行可能な洞察を得るためのリアルタイムメトリクスとログ
5. 簡単なスケーラビリティと高性能
- 高い同時処理をサポートする自動スケーリング
- オペレーションの手間なし - 開発に集中できる
LeapcellのTwitter: https://x.com/LeapcellHQ