다음 이름 의 입력 파일이 있습니다 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