Raghunath Choudhary Asked: 2017-11-29 02:42:33 +0800 CST2017-11-29 02:42:33 +0800 CST 2017-11-29 02:42:33 +0800 CST 在循环中使用 sed 时出现错误 - sed:no input files 772 我sed在 while 循环中使用从包含文件列表的文件中删除尾随空格。正在删除空格。但我收到了消息sed:no input files。 以下是我正在使用的 while 循环: while IFS= read -r line; do echo "tester: $line" sed -i 's/\s*$//' $line ; done < file_list.txt sed ksh 2 个回答 Voted Best Answer Jeff Schaller 2017-11-29T08:06:17+08:002017-11-29T08:06:17+08:00 正如 Ipor 和 glenn 所说,根据 B 层关于 的评论的报告tail -1 file_list.txt,由于该文件末尾有一个空行,当while循环读取该空行时,$line变量被分配一个空值,不留文件名用于sed处理。 $ cat i file1 file2 $ while IFS= read -r line; do printf -- "-->%s<--\n" "$line"; done < i -->file1<-- -->file2<-- --><-- 此处的修复是从 file_list.txt 中删除该尾随空白行,或者围绕您的实际处理进行测试以测试文件是否存在: # do ... if [ -f "$line" ] then # process file fi # done ... 并始终引用您的变量! innocent.anigbo 2019-06-27T02:13:13+08:002019-06-27T02:13:13+08:00 有同样的问题,对我来说这是因为我没有将输入文件传递给 sed CMD 例子: boy=$1 boy2=$2 boy3=$3 while IFS="," read -r col1 col2 do if [ "$col1" == "oke" ]; then sed -i "s/$col2/$boy/g" test.txt fi done < test.txt
正如 Ipor 和 glenn 所说,根据 B 层关于 的评论的报告
tail -1 file_list.txt
,由于该文件末尾有一个空行,当while
循环读取该空行时,$line
变量被分配一个空值,不留文件名用于sed
处理。此处的修复是从 file_list.txt 中删除该尾随空白行,或者围绕您的实际处理进行测试以测试文件是否存在:
并始终引用您的变量!
有同样的问题,对我来说这是因为我没有将输入文件传递给 sed CMD
例子: