如何使用bash命令删除以“ An”开头的行?

时间:2019-05-03 14:23:57

标签: bash macos shell

我正在尝试使用Mac终端中的bash复制文件,但跳过以'An'开头的文件中的特定行。

文件只有4行:

Kalle Andersson    036-134571
Bengt Pettersson   031-111111
Anders Johansson   08-806712
Per Eriksson       0140-12321

我知道如何使用命令cp复制文件,以及如何使用grep命令在文件中抓取特定行。 我不知道如何删除文件中的特定行。

我使用了cp命令:

cp file1.txt file2.txt

复制文件。

我用

grep 'An' file2.txt

我期望新文件包含三行的结果:

Kalle Andersson   036-134571
Bengt Pettersson  031-111111
Per Eriksson      0140-12321.

有没有一种方法可以在一个命令中完成?

1 个答案:

答案 0 :(得分:1)

如亚伦所说:

 grep -vE '^An' file1.txt > file2.txt

您在这里要做的是将grep-v选项一起使用。这意味着打印每一行,除了匹配的行。此外,您指示外壳将grep的输出重定向到file2.txt。这就是>的含义。

Unix / Linux中有许多命令可用于此目的。 sed显然是候选人,awk可以做到,就像

awk '{if (!/^An/) print}' file1.txt > file2.txt

另一个选项是ed

ed file1.txt <<EOF
1
/^An
d
w file2.txt
q
EOF