Home > Enterprise >  Append out from reading lines in a txt file
Append out from reading lines in a txt file

Time:03-30

I have a test.txt file with the following contents

100001
100003
100007
100008
100009

I am trying to loop through the text file and append each one with .xml.

Ex:

100001.xml
100003.xml
100007.xml
100008.xml
100009.xml

I have tried different variations of

while read p; do
echo "$p.zip"
done < test.txt

But it prints out weird like this

.xml01
.xml03
.xml07
.xml08
.xml09

CodePudding user response:

Appending a .xml at the end of each line while removing CRLF, if present.

  • With sed and bash:
#!/bin/bash
sed -E $'s/\r?$/.xml/' test.txt
  • With awk:
awk -v suffix='.xml' '{sub(/\r?$/,suffix)}1' test.txt
Using it in a bash loop:
#!/bin/bash

while IFS='' read -r filename
do
    printf '%q\n' "$filename"
done < <(
    awk -v suffix='.xml' '{sub(/\r?$/,suffix)}1' test.txt
)

Or doing the whole thing in pure shell:

while IFS='' read -r filename
do
    fullname="${filename%\r}.xml"
    printf '%s\n' "$fullname"
done < test.txt
  • Related