私は次のスクリプトを書いた。ファイルを読み込み、1行ずつ印刷したいのですが、空白を新しい行として扱います。なぜそんなことですか?
#!/bin/bash
for i in `cat data.txt`
do
echo $i
done
入力:ファイル名で保存データ.txt
B FM_Server10_grp GPCBIOEMM10 Y N ONLINE
出力:
B
FM_Server10_grp
PCBIOEMM10
Y
N
ONLINE
10
もう一つの質問:fromなどの数値のみを抽出する方法はGPCBIOEMM10
?
答え1
for i in ...
デフォルトでは、改行で区切られたトークンのリストではなく、スペースで区切られたトークンのリストが繰り返されます。空白と改行文字の両方が空白文字であるため、区切り文字と見なされます。
考慮する:
while read line; do
echo $line
done < data.txt
デフォルトでは、read は改行文字まで読み込み、読み取った内容を指定された変数に格納します。