Извиняюсь заранее, если это указано неверно, поскольку я искал, но не смог найти способ sed
+ echo
при использовании while loop
для чтения файла.
У меня есть ранее.TXT-файл, который выглядит так:
The sun is Shining
The moon is dull tonight
I Feel Like Dancing
, и мне нужно, чтобы он выглядел так:
<message>
<source>the_sun_is_shinig</source>
<translation>The sun is Shining</translation>
</message>
<message>
<source>the_moon_is_dull_tonight</source>
<translation>The moon is dull tonight</translation>
</message>
<message>
<source>i_feel_like_dancing</source>
<translation>I Feel Like Dancing</translation>
</message>
Это то, что у меня так далеко ...
#!/bin/bash
echo -n "" > json.xml
while IFS='' read -r line || [[ -n "$line" ]]; do
sed -e 's/\(.*\)/\L\1/; s/ /_/g' < "$line" > temp.txt
sourceline="$(cat temp.txt)"
echo "<message>" >> json.xml
echo -e "\t<source>${sourceline}<source>" >> json.xml
echo -e "\t<translation>${line}<translation>" >> json.xml
echo "<message>" >> json.xml
done < "$1"
rm -f temp.txt
cat json.xml
exit
Но это не удалось
cp@0000 ~/work $ bash .language_file_fixer.sh before.txt
.language_file_fixer.sh: line 5: The sun is Shining: No such file or directory
cat: temp.txt: No such file or directory
.language_file_fixer.sh: line 5: The moon is dull tonight: No such file or directory
cat: temp.txt: No such file or directory
.language_file_fixer.sh: line 5: I Feel Like Dancing: No such file or directory
cat: temp.txt: No such file or directory
<message>
<source><source>
<translation>The sun is Shining<translation>
<message>
<message>
<source><source>
<translation>The moon is dull tonight<translation>
<message>
<message>
<source><source>
<translation>I Feel Like Dancing<translation>
<message>
Как мне передать $ line в sed?