从读取txt文件中的行中追加出来



我有一个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

最新更新