6

我正在尝试提取文件中所有前导的 7 位十六进制字符串,其中包含以下行:

3fce110:: ..\Utilities\c\misc.c(431): YESFREED (120 bytes) Misc
4

2 回答 2

20
egrep -o '^[0-9a-f]{7}\b' file.txt
  • egrepgrep -E与;相同 它使用扩展的正则表达式。
  • -o仅打印每行的匹配部分。
  • ^将匹配锚定到行首。
  • [0-9a-f]{7}匹配七个十六进制字符。如果要匹配大写字母,请在A-F此处添加或添加-i标志。
  • \b检查单词边界;它确保我们不匹配长度超过 7 位的十六进制数字。
于 2013-04-03T13:44:29.057 回答
4

如果文件中的所有行都遵循给定的格式,那么有几个方法:

$ grep -o '^[^:]*' file
3fce110

$ awk -F: '{print $1}' file
3fce110

$ cut -d: -f1 file
3fce110

$ sed  's/:.*//' file
3fce110
于 2013-04-03T13:48:03.150 回答