簡體   English   中英

Linux Bash:while循環無法遍歷文件(行除以\\ r \\ n)

[英]Linux Bash: while loop can't loop through file (where lines are divided by \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)

Linux和* nix使用\\n作為換行序列; Windows例如使用\\r\\n

你可以使用dos2unixtr來轉換它:

dos2unix -b yourfile

(-b創建原始文件的備份)

要么

tr -d '\r' < input.file > output.file

或者(為了滿足您的要求,感謝kojiro提及!):

 tr -d '\r' < input.file | while read p; do echo $p; done < ~/Documents/tempfile

-d用於通過read終止輸入行。 看看以下是否有效

while read -d $'\r\n' p; do echo $p; done < ~/Documents/tempfile

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM