从 txt 文件中的读取行追加

Append out from reading lines in a txt file

我有一个包含以下内容的 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

在删除 CRLF(如果存在)的同时在每行末尾添加一个 .xml

  • 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 '%q\n' "$filename"
done < <(
    awk -v suffix='.xml' '{sub(/\r?$/,suffix)}1' test.txt
)

或者在纯 shell 中完成整个事情:

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