![如何从文件中删除特定行?](https://linux22.com/image/72209/%E5%A6%82%E4%BD%95%E4%BB%8E%E6%96%87%E4%BB%B6%E4%B8%AD%E5%88%A0%E9%99%A4%E7%89%B9%E5%AE%9A%E8%A1%8C%EF%BC%9F.png)
我有一个文本文件,其中的行仅包含逗号。我怎样才能删除这个特定的行?考虑以下示例:
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行将要不是符合条件,则打印出其他行。