【问题标题】:Regular Expression to match against first character and file extension正则表达式匹配第一个字符和文件扩展名
【发布时间】:2019-07-30 16:58:14
【问题描述】:

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

【问题讨论】:

  • 您需要查看正则表达式教程以了解 [^html$] 的含义。这是一个不是html$ 的字符。
  • 如果你的意思是字符串的结尾,$ 也不应该在 []

标签: regex regex-negation


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-18
    • 1970-01-01
    • 2022-10-18
    • 2019-11-05
    • 2012-06-05
    相关资源
    最近更新 更多