【问题标题】:How to delete line from file which matches string [closed]如何从文件中删除与字符串匹配的行[关闭]
【发布时间】:2021-11-10 16:34:40
【问题描述】:

我有一个包含以下信息的文件-

SOURCE "defrust"

DESIGN "2_3"

SYSTEM SPICE

NETLIST SOURCE

NETS "NONE"

//NETS "NONE"

//VARIABLE "cell2"

DESIGN "hello one"

如何使用 unix 命令删除从 SOURCEDESIGN// 开始的整行

输出有点像-

SYSTEM SPICE

NETLIST SOURCE

NETS "NONE"

提前致谢

【问题讨论】:

  • 你有什么尝试?
  • 您是要编辑文件本身,还是要获得不想要的行的流?
  • 请用预期的输出更新问题(对于给定的样本输入)
  • 您要删除SOURCEDESIGN 之间的所有行还是只删除以SOURCEDESIGN 开头的行?如果SOURCEDESIGN// 不是从第 1 列开始(例如,它们有前导空格)...应该保留还是删除这些行?
  • grep -Ev '^(SOURCE|DESIGN|//)' input.txt > output.txt

标签: unix awk sed grep tcl


【解决方案1】:

使用这个 Perl 单行代码:

perl -i.bak -ne 'print if !m{^(SOURCE|DESIGN|//)}' file_name

Perl 单行代码使用这些命令行标志:
-e:告诉 Perl 查找内联代码,而不是在文件中。
-n:循环输入一行一次,默认将其分配给$_
-i.bak:就地编辑输入文件(覆盖输入文件)。在覆盖之前,保存原始文件的备份副本,方法是在其名称后附加扩展名 .bak

^ :正则表达式中的行首。

另请参阅:
perldoc perlrun: how to execute the Perl interpreter: command line switches
perldoc perlre: Perl regular expressions (regexes)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-11-19
    • 2011-10-02
    • 2019-01-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多