2013-04-07 95 views

回答

4

你可以在sed中使用正则表达式。

sed -i 's/^[0-9]\s+b.*//g' xxx_file 

sed -i '/^[0-9]\s+b.*/d' xxx_file 

的“-i”参数将修改该文件的内容直接,只要你想,你可以删除“-i”,并将结果输出到其他文件。

+0

嗨,谢谢。但是,你能告诉我命令中的哪个字段指定了b应该在第二个字段吗?我没有看到像“2”这样的值...... – 2013-04-07 02:11:50

+2

正则表达式的工作方式是'^'标记行的开始; '[0-9]'查找单个数字; '\ s *'会查找零个或多个空格字符(如果您使用的sed的版本支持它,在Linux上通常是这种情况 - 但要注意非Linux系统),然后是一个'b'(然后''*'与该行上的其他内容相匹配)。第一个命令用“无”替换所有的命令,当第二列有一个“b”时留下空行;第二行删除行(并且在正则表达式的末尾确实不需要'。*')。 _ [...继续...] _ – 2013-04-07 02:17:16

+0

@JonathanLeffler哦。感谢您的澄清。 – 2013-04-07 02:19:18

1

AWK:

cat yourfile.txt | awk '{if($2!="b"){print;}}' 
+0

感谢:>看起来不错。 – 2013-04-07 02:13:23

+1

我怀疑'$ 2!=“b”'会打印正确的行; '=='条件打印应该删除的行。另外,您还可以获得[UUOC Award](http://catb.org/jargon/html/U/UUOC.html)。你可以并应该使用'awk'...'yourfile.txt'。 – 2013-04-07 02:21:17

+0

我喜欢那个页面。猫“花费”我的一个过程。我付了多少钱? – sjr 2013-04-07 22:13:44

1

awk中只是做工精细,只是使用的代码如下:

awk '{if ($2 != "b") print $0;}' file 

,如果你想获得更多的使用量约占awk,只是man吧!

相关问题