如何用awk/sed为文本文件添加自定义行号前缀?
解决方案
可以用awk通过判断行号实现不同的前缀规则,命令如下:
awk '{ if (NR == 1) printf("00A: %s\r\n", $0) else if (NR == 2) printf("00B: %s\r\n", $0) else printf("%03d: %s\r\n", NR-2, $0) }' input.txt > output.txt
命令说明
NR是awk内置变量,代表当前处理的行号- 第1行(
NR==1):固定输出前缀00A: - 第2行(
NR==2):固定输出前缀00B: - 第3行及以后(
NR>=3):用NR-2得到起始为1的递增编号,通过%03d格式化为三位带前导零的数字
验证示例
输入文件内容:
136725A6449C5279 933FB466C9CD699B 8FFBBA87E9D3209A AB41FBDC5E281A92 FF80DA7B0054FB29 006BF1C82C75C341 FA118264221B02A7 81E9A1FEB75FFB3D 31AA9FC566C3ADE0 70DDFD6DED2BF29C F0B39014DA7FA6B1 77401108A81E33E1 74EF54060BC2B72F B5518D896DDC266F DE10C97F9FBDA5A6 6C79566CA1BDC06E
执行命令后,输出文件内容:
00A: 136725A6449C5279 933FB466C9CD699B 00B: 8FFBBA87E9D3209A AB41FBDC5E281A92 001: FF80DA7B0054FB29 006BF1C82C75C341 002: FA118264221B02A7 81E9A1FEB75FFB3D 003: 31AA9FC566C3ADE0 70DDFD6DED2BF29C 004: F0B39014DA7FA6B1 77401108A81E33E1 005: 74EF54060BC2B72F B5518D896DDC266F 006: DE10C97F9FBDA5A6 6C79566CA1BDC06E
内容的提问来源于stack exchange,提问作者Savin
相关产品推荐
相关产品推荐

