次の値を持つ file.txt ファイルを考えます。
one,two
three,four
five,six
six,seven
red,tree
次のアクティビティを実行するには、シェルスクリプトコマンドが必要です。
- Forループ、file.txtと同じ行数に対してループを実行し続ける必要があります。
- 各ループ実行では、対応する行を実行への入力と見なす必要があります。
たとえば、最初のループ実行では、ある変数に「1」を保存し、別の変数に「2」を保存する必要がある場合は、実行中に変数値が使用されます。
Input1="one"
Input2="two"
2行目と同様に、「3」は1つの変数に保存し、「4」は別の変数に保存する必要があります。
Input1="three"
Input2="four"
ベストアンサー1
while IFS=, read -r input1 input2; do
# do stuff with "$input1" and "$input2"
done <file.txt
このコマンドにIFS
コンマを設定すると、read
各入力行はコンマで区切られます。行の2つのフィールドを読み取ってinput1
合計を計算しますinput2
。
行に複数のフィールドがある場合は、「残り」のデータがに配置されますinput2
。
データで何をしたいかによって、これは良い考えかもしれません。バラよりシェルループを使用してテキストを処理するのはなぜ悪い習慣と見なされますか?
awk
これは、ループなしで次のデータを解析するのに特に便利です。
$ awk -F, '{ printf("Line %d:\n\tField 1 = %s\n\tField 2 = %s\n", NR, $1, $2) }' file.txt
Line 1:
Field 1 = one
Field 2 = two
Line 2:
Field 1 = three
Field 2 = four
Line 3:
Field 1 = five
Field 2 = six
Line 4:
Field 1 = six
Field 2 = seven
Line 5:
Field 1 = red
Field 2 = tree