【问题标题】:Can grep delete context, but not a full line?grep 可以删除上下文,但不能删除整行?
【发布时间】:2020-02-26 09:52:38
【问题描述】:

我正在通过以下命令从配置文件中删除密钥:

cat showrunningconfig.txt | grep -v '[ \t\r\n\v\f]*[A-Fa-f0-9][A-Fa-f0-9][A-Fa-f0-9][A-Fa-f0-9][A-Fa-f0-9][A-Fa-f0-9][A-Fa-f0-9][A-Fa-f0-9]'

这会删除整行。 但我只想删除相关的模式。 grep 有 -o 选项,它只显示相关模式而不是整行。 但是 -o 选项不能与 -v 结合使用

有什么想法吗? 非常感谢!

【问题讨论】:

  • 最好使用sed
  • 能否在您的问题中发布输入和预期输出示例,让我们知道以便更好地理解。
  • 试试LC_ALL=C sed -i 's/[[:space:]]*[A-Fa-f0-9]\{8\}//g' showrunningconfig.txt
  • 你也可以用[[:xdigit:]]代替[A-Fa-f0-9]

标签: regex linux bash grep


【解决方案1】:

当您要从字符串中删除部分模式时,您应该使用sed

sed -i 's/[[:space:]]*[[:xdigit:]]\{8\}//g' showrunningconfig.txt

online demo

s="Text A1f4E3D4 and more text"
sed 's/[[:space:]]*[[:xdigit:]]\{8\}//g' <<< "$s"
# => Text and more text

详情

  • -i - 就地替换(GNU sed 选项)
  • s/[[:space:]]*[[:xdigit:]]\{8\}//g:
    • s - 替代命令
    • [[:space:]]* - 0+ 个空格
    • [[:xdigit:]]\{8\} - 八个 A-Fa-f0-9 字符。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-12-16
    • 2011-10-29
    • 1970-01-01
    • 1970-01-01
    • 2011-03-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多