次の名前の入力ファイルがありますtest.txt
。
Homo sapiens
Mus musculus
Rat rattus rattus
for
ここでループを使用して各行を繰り返したいと思います。このような:
for i in "`cat test.txt`"
do
fn=store_name
do something else > ${fn}.txt
done
各行名の間にスペースがあるので、この行名の間に追加される変数を作成しているようにしたいとcat test.txt
思います。fn
_
fn
Homo_sapiens
Mus_musculus
Rat rattus rates
Rat_rattus_rattus
この目標をどのように達成できますか?
答え1
スペースを下線で囲むために使用されますtr
。
while read line
do
echo ${line} | tr -s " " "_"
done < test.txt
Homo_sapiens Mus_musculus Rat_rattus_rattus
答え2
使用awk
:
awk '{OFS="_";}{$1=$1; print}' test.txt
ループを使用してください。
while read -r line; do
line=${line// /_}
command using "$line"
done<test.txt
答え3
sed
ループを介してそれを使用して出力を読み込みます。
sed 's/[[:space:]]\+/_/g' test.txt | while IFS= read -r line; do
process "$line" however
done > some.output.file
答え4
誰かが答えを与えました。ティー他の人がくれました。アッ、今どうすればいいですか?sed:
for i in "`cat test.txt`"
do
fn="$(echo "$i" |sed -e 's/ /_/g')"
'do something else' > $fn.txt
done