我正在使用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
答案 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 `