こんにちは、連続投稿の山田ハヤオです。
シェルスクリプトで、区切られてる文字の列を指定して抽出する方法をまとめてみました。
【追記】もっと良い方法があったらコメントお願いします。
列を抽出する
これからabc.txt
という以下のファイルで考えます。
aa bb cc dd ee ff gg hh ii jj kk ll mm nn oo pp qq rr ss tt uu vv ww xx
今回は3列目を取り出してみます。
awkを使う
今まではこれしか知りませんでした。
速度が遅くて悩んだのが今回調べるに至った動機だったりします。
awkなのでもっといろいろ細かい条件を設定できます。
cat ./abc.txt | awk '{print $3}'
cutを使う
さっき知った方法です。一番シンプルかも。
cat ./abc.txt | cut -d ' ' -f 3
while
1行ずつ取り出して配列に変換して取り出す方法です。正直めんどいし遅そう。
いかにも頭悪そうな方法だと思います。
while read line; do _line=(${line}) echo "${_line[2]}" done < ./abc.txt
余談
自分はいつもgetclm
という関数を作成しています。
引数で列を指定し、テキストの内容は標準入力から受け取るというシンプルな関数です。
cat -
を使うと標準入力から値を受け取れます。
function getclm() { echo "$(cat -)" | cut -d " " -f "${1}" }
上の例の場合はこういうふうに使いましょう。
cat ./abc.txt | getclm 3
Alter Linuxのソースコードでいっぱい使ってます。
ALter Linuxのソースコード↓
GitHub - FascodeNet/alterlinux: Alter Linux - ArchLinux-derived OS made in Japan aimed at being usable by anyone
Alter Linux - ArchLinux-derived OS made in Japan aimed at being usable by anyone - FascodeNet/alterlinux
前回の猿でもわかるArch Linux↓
コメント