awkを使用する
- awk ‘パターン { アクション }’ [ 入力ファイルのパス ]
- /xxx/: 正規表現はスラッシュの間に入れる
- NR: 行番号
- ||: または
- { print $0 }: その行を表示($0は省略可)
- $1: 1列目を表示
[root@localhost ~]# ps -u | awk '{print $0}'
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 881 0.0 0.0 3044 256 tty1 Ss+ Aug12 0:00 /sbin/agetty -o -p -- \u --noclear - linux
root 139614 0.0 0.2 13180 6400 pts/0 S Aug16 0:00 su - root
root 139618 0.0 0.1 5020 3968 pts/0 S Aug16 0:00 -bash
root 224777 0.0 0.1 7616 3200 pts/0 R+ 14:15 0:00 ps -u
root 224778 0.0 0.1 6528 3584 pts/0 S+ 14:15 0:00 awk {print $0}
1行目がヘッダの場合
[root@localhost ~]# ps -u | awk 'NR==1 || /bash/ {print}'
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 139618 0.0 0.1 5020 3968 pts/0 S Aug16 0:00 -bash
root 224590 0.0 0.1 6528 3584 pts/0 S+ 14:08 0:00 awk NR==1 || /bash/ {print}
{ action } を省略すると、{ print $0 }と同じアクションとして実行する。
- /xxx/: /xxx/ { print $0 } と同じ
[root@localhost ~]# ps -u | awk 'NR==1 || /bash/'
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 139618 0.0 0.1 5020 3968 pts/0 S Aug16 0:00 -bash
root 224279 0.0 0.1 6528 3584 pts/0 S+ 13:55 0:00 awk NR==1 || /bash/