파일의 각 줄을 밑줄로 연결하세요.

파일의 각 줄을 밑줄로 연결하세요.

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

관련 정보