如何从其他grep命令输出的行获取子字符串

时间:2014-07-10 06:30:08

标签: linux unix vim grep

我有多行数据文件。我可以使用grep命令找到这些行。我需要从上面的grep命令的输出中获取字符串的一部分。而且,还需要在那里找到任何重复。

感谢。

2 个答案:

答案 0 :(得分:0)

您可能希望使用grepcut的组合,如:

grep PATTERN FILENAME | cut -b x-z

其中grepPATTERN中搜索FILENAMEcut显示从xz的输出(这些应该是数字) )。

或者你可以使用一个命令:

awk '/PATTERN/ { print substr($0,FROM,LENGTH) }' FILENAME

在此版本中,您需要将FROM替换为所需输出开始的字节,并将LENGTH替换为......您可能会猜到它。

答案 1 :(得分:0)

有许多用于字符串搜索和操作的Unix工具,grepsedawk的链,最多perl提供(主要是兼容的)进展能力。所以,你可以从grep开始,当这不适合你时,"升级"至sed,依此类推。 (最强大的那个并没有完全驱逐弱者的原因就像你没有使用大型电钻只是将一个小钉子放入干墙一样。)

问题的最佳解决方案取决于字符串细节的某些部分。如果这是由某个角色或固定位置分隔的,cut可以做到这一点。要删除不需要的模式匹配,sed就是一个。使用后者,您可以grep并在一次调用中删除,但通过管道组合它们更简单(效率更低):

$ grep PATTERN file | sed 's/unwanted stuff//'