我想从文本文件中删除与字符串匹配的行的某些列,但是保留行的其余部分不变。当行匹配条件时删除列
说我有(实际上行的千元),文件
10 12 a
USA John TGCAGG
USA John TGCATG
5 2 b
CAN Tom TGCACG
CAN Tom TGCAAC
....
我想创建一个新的文件,该文件中删除包含TGCA行2列,但保留全部其他线路不变。我想看看:
10 12 a
USA TGCAGG
USA TGCATG
5 2 b
CAN TGCACG
CAN TGCAAC
我可以修改哪些列上匹配使用正则表达式来启动AWK或sed的线条打印,但我不能让其他线路(未修正)打印,或到保持这些行的顺序。
我需要在awk中使用if语句吗?尝试使用下一个,但我不认为我有这个权利。
我不太关注NF如何在这里使用或如何设置所需的数字字段...如果有4列,我想保持3和4?或者让我说我想保留第1和第3和第4列(但不是2)?有没有更通用的方法来做到这一点(或解释代码)而不减少字段? – 2015-04-01 18:46:24
在awk中删除列是非常棘手的。为了防止获得尾随空格,我会去做这样的事情:[如何使用shell(awk,sed,whatever)删除文件中的前两列](http://stackoverflow.com/a/14715189/1983854) – fedorqui 2015-04-01 18:51:24
所以,如果你能负担得起减少'NF'是好的。如果它必须更复杂,我仍然会进行某种列移动,并最终减少“NF”。 – fedorqui 2015-04-01 18:56:50