【问题标题】:Keep all lines from a file with quotes or curly braces?用引号或花括号保留文件中的所有行?
【发布时间】:2016-07-15 22:35:37
【问题描述】:

快速的问题,但想知道如果给定一个输入文件,我怎么能几乎只保留文件中包含{}" 的行。我所做的是搜索如何删除所有不包含特定模式的行,并最终使用 sed 来做这样的事情:

sed '/{\|}/!d' news.txt > asd.txt

这最终只保留包含{} 的行,但我在添加整个保留行时遇到了麻烦"。我试着做:

sed '/{\|/}\}"/!d' news.txt > asd.txt

但这会导致不匹配的}

知道如何将" 包含到此 sed 语句中吗?

谢谢!

【问题讨论】:

  • grep -e '{' -e '}' -e '"' news.txt > asd.txt?
  • 是的,完美。感觉 grep 会更容易使用,但在网上找不到任何相关的。谢谢!
  • 带有 GNU grep 的较短版本:grep -E '{|}|"' news.txt > asd.txt
  • 更短更短的版本:grep '[{}"]' news.txt > asd.txt

标签: bash sed


【解决方案1】:
sed '/{\|}\|"/!d' news.txt > asd.txt

【讨论】:

    【解决方案2】:

    这使用 sed 仅打印您想要的行:

    sed -n '/[{}"]/p' news.txt
    

    这与 grep 相同:

    grep '[{}"]' news.txt
    

    这也是一样的,但是逻辑颠倒了:不是打印匹配的行,而是删除不匹配的行:

    sed '/[{}"]/!d' news.txt
    

    在所有情况下,[...] 用于匹配方括号内的任何字符。

    【讨论】:

      猜你喜欢
      • 2011-01-12
      • 2019-01-26
      • 2019-07-05
      • 2012-01-18
      • 1970-01-01
      • 2010-12-09
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多