我正在尝试检查代码的结尾,因为它们导致我运行的服务器出现了一些问题。要做到这一点,我使用bash脚本(因为我更熟悉bash)来读取行并返回那些不以分号结尾的行。我的bash脚本如下
while read line
do
if[$line!=*;]
echo $line
fi
done < $1
当我运行脚本时,它表示fi
出现了错误,但我无法弄明白。我也意识到这会返回if
和while
这样的陈述,但这样可以满足我的需求。
给出样本输入
use CGI;
print "<html>"
print "<head>";
print "</head>";
print "<body><p> HELLO WORLD </p>";
print "</body>";
print "</html>"
这应该是输出
print "<html>"
print "</html>"
答案 0 :(得分:2)
我认为最简单的方法是使用grep。给定input.txt
这样的文件:
spam
foo;<Space><Space>
sausage
baked;<Tab>
beans
unladen;
你可以做到
grep -v ';\s*$' input.txt
并获得
spam
sausage
beans
grep的-v
标志表示“返回与此正则表达式不匹配的所有行”,因此它将跳过以分号结尾的所有行。
如果您的行在分号后面也有空格,\s*
表示“任何空格字符序列”,所以grep也会删除这些行。
答案 1 :(得分:2)
您遇到问题的原因是您的if
声明需要then
。您还需要更多空格并引用您的变量。但它仍然行不通。你的比较也是错误的 - 这不是[
比较字符串的方式。您可以改为使用bash的[[
:
while read line
do
if [[ "$line" != *\; ]]
then
echo "$line"
fi
done < $1
但即便如此,你真正应该做的是:
grep -v ';$' $1