Regex 与第一个字符和文件扩展名匹配的正则表达式

Regex 与第一个字符和文件扩展名匹配的正则表达式,regex,regex-negation,Regex,Regex Negation,我正在使用Bash尝试编写一个命令,该命令获取第一个字符不是“a”且文件不以“.html”结尾的每个文件,但似乎无法使这两个字符都正常工作 到目前为止,我可以让我的正则表达式匹配所有以“a”开头并以“.html”结尾的文件,并将它们删除,但我似乎无法解决的问题是,文件以“a”开头并以不同的文件扩展名结尾。我的正则表达式似乎忽略了第二个要求,只是不管怎样都隐藏了它 cat inputfile.txt | sed -n '/^[^a].*[^html$]/p' 输入文件内容: 123 anappl

我正在使用Bash尝试编写一个命令,该命令获取第一个字符不是“a”且文件不以“.html”结尾的每个文件,但似乎无法使这两个字符都正常工作

到目前为止,我可以让我的正则表达式匹配所有以“a”开头并以“.html”结尾的文件,并将它们删除,但我似乎无法解决的问题是,文件以“a”开头并以不同的文件扩展名结尾。我的正则表达式似乎忽略了第二个要求,只是不管怎样都隐藏了它

cat inputfile.txt | sed -n '/^[^a].*[^html$]/p'
输入文件内容:

123
anapple.html
456
theapple.html
789
nottrue.html
apple.csv 
12
输出:

123
456
theapple.html
789
nottrue.html
12

与其尝试编写与要保留的行相匹配的模式,不如编写与要删除的行相匹配的模式,然后使用
grep-v
打印所有不匹配的行

grep -v '^a.*\.html$' inputfile.txt

您需要查看regexp教程以了解
[^html$]
的含义。它是不是
h
t
m
l
$
的单个字符。如果您是指字符串的结尾,
$
也不应位于
[]