我试图从包含多行的文件中读取行.我想识别只包含空格的行.根据定义,空行为空,不包含任何内容(包括空格).我想检测似乎是空的行,但它们不是(仅包含空格的行)
while read line; do
if [[ `echo "$line" | wc -w` == 0 && `echo "$line" | wc -c` > 1 ]];
then
echo "Fake empty line detected"
fi
done < "$1"
Run Code Online (Sandbox Code Playgroud)
但是因为read忽略了字符串开头和结尾的空格,我的代码无效.
一个文件的例子
hi
hi
(empty line, no spaces or any other char)
hi
(two spaces)
hey
Run Code Online (Sandbox Code Playgroud)
请帮我修复代码
通过清除IFS(内部字段分隔符)的值禁用分词:
while IFS= read -r line; do
....
done < "$1"
Run Code Online (Sandbox Code Playgroud)
这-r
不是绝对必要的,但这是一种很好的做法.
另外,一种更简单的方法来检查line
(我假设你正在寻找一条除了空格之外的一行):
if [[ $line =~ ^$ ]]; then
echo "Fake empty line detected"
fi
Run Code Online (Sandbox Code Playgroud)