1

我有非常大的制表符分隔文件,我需要删除特定列中出现“TelePacific”一词的所有行。在这种情况下,TelePacifc 出现在第 4 列中的所有行。这是一个示例输入文件:

7/18/13 10:06   0:00:09 TelePacific random person DEREK         9256408665  random company
7/18/13 10:07   0:00:21 TelePacific random person DEREK         9256408665  random company
7/18/13 10:10   0:19:21 TelePacific random person DEREK         9256408665  random company
7/18/13 10:39   0:01:07 random person       107  
7/18/13 11:02   0:01:41 random person Gilbert       107 TelePacific
7/18/13 12:17   0:00:42 random person Gilbert       107 TelePacific
7/18/13 13:35   0:00:41 random person Gilbert       107 TelePacific
7/18/13 13:44   0:12:30 TelePacific ADKNOWLEDGE     8169311771  random company
7/18/13 14:46   0:19:48 TelePacific TOLL FREE CALL  8772933939  random company
7/15/13 10:09   0:01:27 random person Esquivel      272 TelePacific
7/15/13 10:16   0:00:55 random person Esquivel      272 TelePacific
7/15/13 10:59   0:00:51 random person Esquivel      272 TelePacific
7/15/13 11:01   0:01:09 random person Esquivel      272 TelePacific
4

5 回答 5

5

使用grep -v

grep -v "\bTelePacific\b" file > output && mv output file

或使用 awk:

awk '$4 != "TelePacific"' file > output && mv output file
于 2013-07-24T19:23:28.367 回答
1

这应该可以解决问题:

$ sed '/TelePacific/d' file

如果您对输出感到满意,请使用-i选项将更改存储回文件。

$ sed -i '/TelePacific/d' file

编辑:

只返回TelePacific第四列的结果:

$ awk '$4=="TelePacific"' file

或者反过来:

$ awk '$4!="TelePacific"' file
于 2013-07-24T19:22:38.173 回答
1

fgrep -v会这样做。

fgrep等效于grep -F并防止grep将模式中的特殊字符解释为正则表达式控制字符。该-v参数导致输出与模式fgrep匹配的所有行,而不是输出匹配的行(这是默认值)。

fgrep -v TelePacific inputfile.tsv > outputfile.tsv

正如上面提到的anubhava,您可以选择grep -v "\bTelePacific\b"确保不会意外匹配“TelePacificFoo”或“FooTelePacific”。

于 2013-07-24T19:23:25.390 回答
0

这是 sed 的解决方案

#!/bin/bash

sed '/TelePacific/d' your_file.txt > file_without_telepacific.txt
于 2013-07-24T19:22:11.393 回答
0

尝试这个:

grep -v TelePacific in-file > out-file

-v选项反转搜索,因此 grep 打印所有与搜索模式不匹配的行。

in-file如果和out-file相同,这将不起作用。要实现这一点,您必须使用这样的临时文件:

grep -v TelePacific in-file > in-file.tmp && mv in-file.tmp in-file
于 2013-07-24T19:23:31.603 回答