计算文件中某个位置的空行

时间:2015-08-11 07:24:04

标签: bash shell

我正在使用bash版本4.1.2

我有一个文件,我必须确保列位置10-20都是文件中的空白。

所以我使用这个方法:

COUNTER=` cut -c10-20 MY_FILE | tr -d ' ' | grep -v '^$' | wc -l `
if [[ $COUNTER -gt 0 ]]
then
     echo There is some non-blank char in position 10-20
fi

此方法不起作用。 grep命令提供消息:Binary file (standard input) matches

即使它们在整个文件的位置10-20都是空白。 所以,这使得COUNTER变为1(实际上,它应该是0)

我尝试使用grep --text -v '^$' 这不起作用,随后的wc -l将给出文件中的总行数。

任何帮助?

Alvin SIU

2 个答案:

答案 0 :(得分:1)

尝试以下,

COUNTER=` cut -c10-20 filename.txt| tr -d ' ' | grep -v '^$' | wc -l `
if [ $COUNTER -gt 0 ];then
 echo 'There is some non-blank char in position 10-20'
fi

注意:纠正在IF语句中调用变量的错误以及ShravanYadav提到的文件名

答案 1 :(得分:0)

您使用的

MY_FILE是文件名或变量名。你应该使用$ {MY_FILE} 如果MY_FILE是可变的

COUNTER=` cut -c10-20 ${MY_FILE} | tr -d ' ' | grep -v '^$' | wc -l `