awk文例集

徐々に充実させる予定。

フルパスからファイル名に変換

右端だけもってきたい。

  • 元データ
$ find  /etc/cron.d
/etc/cron.d
/etc/cron.d/0hourly
/etc/cron.d/sysstat
/etc/cron.d/update-motd
/etc/cron.d/raid-check
  • 案1
    • 区切り文字に"/"を指定
    • マッチした一番最後の値(=一番右端の文字列)を出力
$ find  /etc/cron.d | awk -F "/" '{print $NF}'
cron.d
0hourly
sysstat
update-motd
raid-check
  • 案2
    • 正規表現でマッチさせる。
    • 読みづらいが、
      • awk中の正規表現/正規表現/のようにスラッシュで囲む
      • 一文字目が/ (エスケープ込みで\/)
      • 二文字目以降が[^\/]*\/以外の文字、という意味
      • 文末$
    • 一つしかマッチしない読みでa[0] を出力する。
$ find  /etc/cron.d |  awk 'match($0, /\/[^\/]*$/,a) {print a[0]}'
/cron.d
/0hourly
/sysstat
/update-motd
/raid-check