如何从文件中删除特定行?

如何从文件中删除特定行?

我有一个文本文件,其中的行仅包含逗号。我怎样才能删除这个特定的行?考虑以下示例:

CREATE TABLE ENTERPRISE.TSDAILYACCTSUMMARY (
    TSDAILYACCTID FOR COLUMN TSDAYID    INTEGER INTEGER NOT NULL ,
    ,
    TIMESHEETDATE FOR COLUMN TSDATE     DATE DEFAULT NULL ,

如何删除第三行?

答案1

尝试

 awk '$1 == "," && NF==1 { next ; } { print ; } ' file > other_file

或者

 grep  -v '^[ ]*,[ ]*$' file > other_file

或者

 sed -i -e '/^[ \t]*,[ \t]*$/d' original_file

答案2

perl -i -ne 'print if ! /^\s*,\s*$/' file

答案3

更简洁的awk解决方案可以是:

awk '!(NF==1&&$1==",")' /path/to/file
  • awk只要谓词/过滤器/条件为 ,默认打印整行true
  • 在这种情况下,条件是不是单个字段 ( NF==1)存在 ","
  • 因此,只有第3行将要不是符合条件,则打印出其他行。

相关内容