我在这样的文件中有大约 100 条打印语句:
printf("%f \n\n",row1.req_pnttime);
我想复制字符串中的变量名称,使其变成这样
printf("row1.req_pnttime: %f \n\n",row1.req_pnttime);
有人能帮我做到这一点吗?
PS-每个打印语句的变量名长度都不同,所以我需要一种通用的方法来做到这一点。
答案1
sed 's/\(.*("\)\(.*,\)\(.*\))/\1\3: \2\3)/' /path/to/input.txt >/path/to/output.txt
解释
- 一般格式是
sed 's/find/replace/'
。即找到一个表达式并替换它。 \(
...\)
这些是捕获组。因此,它们之间匹配的任何东西都会被“捕获”在变量中,并且可以在替换部分中调用,使用\1
、\2
、\3
等。- 因此在这里,找到
\(.*("\)\(.*,\)\(.*\))
。- 捕获组 1:
.*("
。从开头到以 结尾的任何内容进行捕获("
- 捕获组 2:
.*,
。从 #1 开始,捕获直到,
。 - 捕获组 3:
.*
。捕获最多(但不包括))
。
- 捕获组 1:
- 然后用捕获组和附加格式替换
\1\3: \2\3)
。