我有这个循环:
while read p; do echo $p; done < ~/Documents/tempfile
必须循环遍历~/Documents/tempfile
.
当该文件中的行由\r\n
- 分隔时,循环只能回显第一行。
当我手动编辑文件时(Enter
在每行的末尾点击) - 循环可以回显所有行。
Bash 是否使用其他东西而不是\r\n
?
发现一个问题:
我也必须\r\n
在文件末尾添加。
之后它开始返回所有行。
谢谢你们。
我有这个循环:
while read p; do echo $p; done < ~/Documents/tempfile
必须循环遍历~/Documents/tempfile
.
当该文件中的行由\r\n
- 分隔时,循环只能回显第一行。
当我手动编辑文件时(Enter
在每行的末尾点击) - 循环可以回显所有行。
Bash 是否使用其他东西而不是\r\n
?
发现一个问题:
我也必须\r\n
在文件末尾添加。
之后它开始返回所有行。
谢谢你们。
您可以使用IFS
我相信的变量:
(IFS=$'\r\n' && while read p; do echo $p; done < ~/Documents/tempfile)
-d
用于用read终止输入行。看看以下是否有效
while read -d $'\r\n' p; do echo $p; done < ~/Documents/tempfile
Linux 和 *nix\n
用作换行符序列;例如 Windows 使用\r\n
.
您可以使用dos2unix
或tr
转换它:
dos2unix -b yourfile
(-b 创建原始文件的备份)
或者
tr -d '\r' < input.file > output.file
或(为满足您的要求,感谢小次郎提及!):
tr -d '\r' < input.file | while read p; do echo $p; done < ~/Documents/tempfile