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