使用bash分割文件中的行并将其写回文件不会执行任何操作

问题描述:

我正在试图通过逗号分隔文件中的每一行进行循环,并使用逗号分隔它。重要的是,我希望将更改写入同一个文件。此代码不会给出错误,但会挂起并且什么也不做。任何建议或更好的解决方案使用bash分割文件中的行并将其写回文件不会执行任何操作

file='file.txt' 
while IFS=',' read -ra f1 f2 
do 
    echo "field # 1 : $f1 ==> field #2 : $f2" 
done >> $file 

因为你的命令是简单的错误。你甚至没有阅读文件。要完成后读取文件,您需要< file

file='file.txt' 
while IFS=',' read -r f1 f2 
do 
    echo "field # 1 : $f1 ==> field #2 : $f2" 
done < "$file" > output 
+0

有试过,但它输出到屏幕,并不会更改file.txt的 – Mark

+0

见更新的代码它重定向输出到'output'文件。后来你可以执行'mv output file.txt' – anubhava

+0

是的,所以它不可能覆盖file.txt,但我必须将temp输出文件mv到file.txt。另外,我似乎在输出每行的末尾都得到^ M,有什么想法吗? – Mark