Quantcast
Channel: Bashタグが付けられた新着記事 - Qiita
Viewing all articles
Browse latest Browse all 2912

シェルスクリプトで特定の列を抽出する

$
0
0

【追記】もっと良い方法があったらコメントお願いします。

列を抽出する

こういうファイルがあるとする。

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

そのうちn列目だけを取り出したいときの方法をまとめてみる。今回は3列目を取り出してみる。

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という関数を作成している。引数で列を指定し、テキストの内容は標準入力から受け取る。

function getclm(){echo"$(cat -)" | cut-d" "-f"${1}"}

上の例の場合はこういうふうに使う。

cat ./abc.txt | getclm 3

Viewing all articles
Browse latest Browse all 2912

Trending Articles