次のテキストファイルがあります。
1923.12.312. Nikl
12391.123.123 Jo
12398123.123912 Ad
1923.12.312.
variable1
このファイルを繰り返してmakeを実行し、Nikl
variable2
echoコマンドで使用しようとします。その後、続行してこれらの背中を作り、エコーする必要が12391.123.123
variable1
あります。Jo
variable2
これが私がこれまでにしたことです:
while read p
do
variable1="$(awk '{print $1}')"
variable2="$(awk '{print $2}')"
echo "if [ \"\$STATUS\" == \"$variable1\" ]
then
vem=\"$variable2\"
fi"
done saker.txt
次のように出力する必要があります。
if [ "$STATUS" == "1923.12.312." ]
then
vem="NIKL"
fi
ちょっと待ってください。しかし、そうではありません。代わりに、これが出力です。
awk: cmd. line:1: {print $2)
awk: cmd. line:1: ^ syntax error
if [ "STATUS" == "12391.123.123
12398123.123912" ]
then
vem=""
fi
また、変数を削除して次のことを試しました。
while read p
do
echo "if [ \"\$STATUS\" == \"`awk '{print $1}'`\" ]
then
vem=\"`awk '{print $2}'`\"
fi"
done saker.txt
しかし、それは同じ結果をもたらしました。
ベストアンサー1
シェルを使う
行を変数に分割する読み取り機能を使用すると簡単です。
while read var1 var2
do
echo "if [ \"\$status\" == \"$var1\" ]
then
vem=\"$var2\"
fi"
done <saker.txt
これで以下が生成されます。
if [ "$status" == "1923.12.312." ]
then
vem="Nikl"
fi
if [ "$status" == "12391.123.123" ]
then
vem="Jo"
fi
if [ "$status" == "12398123.123912" ]
then
vem="Ad"
fi
awkを使用してください:
この awk コマンドは単一のprintf
コマンドを使用します。
$ awk '{printf "if [ \"$status\" == \"%s\" ]\nthen\nvem=\"%s\"\nfi\n",$1,$2}' saker.txt
if [ "$status" == "1923.12.312." ]
then
vem="Nikl"
fi
if [ "$status" == "12391.123.123" ]
then
vem="Jo"
fi
if [ "$status" == "12398123.123912" ]
then
vem="Ad"
fi