我有一个test.txt文件,其中包含以下内容
100001
100003
100007
100008
100009
我正试图循环浏览文本文件,并用.xml.将每个文本文件都附加上去
例如:
100001.xml
100003.xml
100007.xml
100008.xml
100009.xml
我尝试过的不同变体
while read p; do
echo "$p.zip"
done < test.txt
但它打印出来很奇怪,就像这个
.xml01
.xml03
.xml07
.xml08
.xml09
在每行末尾添加一个.xml
,同时删除CRLF(如果存在(。
- 使用
sed
和bash:
#!/bin/bash
sed -E $'s/r?$/.xml/' test.txt
- 使用
awk
:
awk -v suffix='.xml' '{sub(/r?$/,suffix)}1' test.txt
在bash循环中使用它:
#!/bin/bash
while IFS='' read -r filename
do
printf '%qn' "$filename"
done < <(
awk -v suffix='.xml' '{sub(/r?$/,suffix)}1' test.txt
)
或者在纯外壳中完成整个操作:
while IFS='' read -r filename
do
fullname="${filename%r}.xml"
printf '%sn' "$fullname"
done < test.txt