[shell] awkを使いたい

hoge.txt

1
2
1 2 3
4 5 6
1
awk '{print $1}' hoge.txt

$ bash cli.bash
1
4

1
awk '{print $0}' hoge.txt

$ bash cli.bash
1 2 3
4 5 6

1
awk '$1 ~ /^[0-9]/ { print $1; }' hoge.txt

$ bash cli.bash
1
4

sub(前, 後、入力文字列)

1
awk '$1 ~ /^[0-9]/ {sub("1", "10", $0); print $1; }' hoge.txt

$ bash cli.bash
10
4

置換、正規表現で検出しているのがわかります。

1
2
3
helpopts=$($bitcoin_cli -help 2>&1 | awk '$1 ~ /^-/ { sub(/=.*/, "="); print $1 }' )
//
commands=$(_bitcoin_rpc help 2>/dev/null | awk '$1 ~ /^[a-z]/ { print $1; }')

なるほど、ユーザのCLIの処理を実装するのはシェルスクリプトで書いていくのね。