2017-11-07 21 views
-1

テキストファイルには、すべての行にいくつかの単語が含まれています。それはのように見えるテキストファイルから列を読み込んで配列に格納する方法は? Bash

split time not big 
every cash flu green big 
numer note word 
swing crash car out fly sweet 

どのようにこれらの行を分割して配列に格納しますか?私はこのような配列で行う必要があります

for i in $file 

do 
echo "$array[0]" 
echo "$array[2]" 
done 

誰でも手助けできますか?

+0

あなたは、アレイ内のファイルの行を保存しますか?または、単語に分割したいと思う単一の行がありますか?あなたが求めていることははっきりしていません。 – melpomene

+0

すべての行から単語を配列に分割したい。 every_line_inファイルには、このようなものが必要です。 '; do item1 = $ array_form_line_0 [0] item2 = $ array_form_line_0 [3] done' – mia102aim

+0

行を配列内に入れるのか、 'item1'と' item2'だけにしたいですか? – Jack

答えて

2

ファイルを行単位でreadで読み取り、その行を配列に割り当てることができます。それはかなり壊れやすく、ファイルの内容によっては壊れる可能性があります。

while read line; do 
    array=($line) 
    echo "${array[0]}" 
    echo "${array[2]}" 
done < file 

テキストファイルを解析するためのより良い方法はawkを使用することです:あなたは、配列を必要とする理由私は、その後、表示されていない

awk '{print $1; print $3}' file 
+0

これは完璧に動作します、ありがとう! – mia102aim

1

。あなたはこれを行うことができます:

while IFS= read -r line; do 
    read -r item1 item2 item3 <<< "$line" 
    printf '%s\n%s\n' "$item1" "$item3" 
done < "$file" 

をしかし、あなたがしたい場合は、readはあまりにも、あなたの配列を与えることができます:

read -ra array <<< "$line" 
    printf '%s\n%s\n' "${array[0]}" "${array[2]}" 
関連する問題