シェルスクリプトを使用したフラットファイルの解析

シェルスクリプトを使用したフラットファイルの解析

次の形式のファイルがあります

User:blala
Pass:blala
IP:***.***.**.**

IFSを試してみましたが、うまくいきません。

input="/path/to/your/input/file.cvs" 
while IFS=',' read -r f1 f2 f3 f4 f5 f6 f7 
do 
  echo "$f1 $f2 $f3 $f4 $f5 $f6 $f7" 
done < "$input"

シェルスクリプトからユーザー、パス、IP値を取得したいと思います。

助けてください。

ベストアンサー1

を使用したい場合がありますが、evalパスワードにランダムな文字(コードで実行することができるか、実行される予定)が含まれる可能性があるため、危険があります。 「そうしないでください!」
これはうまくいきます - 配列を使用してください。

テストファイルの内容

User:blala
Pass:blala with    spaces: and colons: and $PATH
IP:***.***.**.**

set -f                          # disable globbing
IFS=$'\n'                       # 'word' split only at newline char
value=($(sed 's/:/\n./' file))  # '.' to cater for empty value fields

echo user="${value[1]/./}" 
echo pass="${value[3]/./}" 
echo   ip="${value[5]/./}"

出力:

user=blala
pass=blala with    spaces: and colons: and $PATH
ip=***.***.**.**

おすすめ記事