我正在尝试使用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.
有没有一种方法可以在一个命令中完成?
答案 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