我正在尝试提取文件中所有前导的7位十六进制字符串,其中包含以下行:
3fce110:: ..\Utilities\c\misc.c(431): YESFREED (120 bytes) Misc
答案 0 :(得分:13)
egrep -o '^[0-9a-f]{7}\b' file.txt
egrep
与grep -E
相同;它使用扩展的正则表达式。-o
仅打印每行的匹配部分。^
将匹配锚定到该行的开头。[0-9a-f]{7}
匹配七个十六进制字符。如果您想匹配大写字母,请在此处添加A-F
或添加-i
标记。\b
检查字边界;它确保我们不会匹配长度超过7位的十六进制数。答案 1 :(得分:4)
如果文件中的所有行都遵循给定的格式,那么有几种方法:
$ grep -o '^[^:]*' file
3fce110
$ awk -F: '{print $1}' file
3fce110
$ cut -d: -f1 file
3fce110
$ sed 's/:.*//' file
3fce110