[ 7.309563] initcall ci_hdrc_usb2_driver_init+0x0/0x10 returned 0 after 396 usecs
时间: 2024-03-27 11:41:07 浏览: 54
LinkerScript.in.Linux--中文版
这一行文本中,`ci_hdrc_usb2_driver_init+0x0/0x10` 表示函数名,`returned 0` 表示函数返回值为 0,`after 396 usecs` 表示函数执行时长为 396 微秒。
因此,可以使用 sed 命令将这一行文本中的信息提取出来,具体命令如下:
```bash
echo '[ 7.309563] initcall ci_hdrc_usb2_driver_init+0x0/0x10 returned 0 after 396 usecs' | sed -E 's/.*initcall ([^+]+)\+.+ returned ([0-9]+) after ([0-9]+) usecs/\1 \2 \3/g'
```
输出结果为:
```
ci_hdrc_usb2_driver_init 0 396
```
其中,`ci_hdrc_usb2_driver_init` 是函数名,`0` 是函数返回值,`396` 是函数执行时长,三者之间用空格分隔。
该命令的具体解释如下:
- `echo '[ 7.309563] initcall ci_hdrc_usb2_driver_init+0x0/0x10 returned 0 after 396 usecs'`:用于模拟输入原始文本;
- `sed -E`:使用 sed 并开启扩展正则表达式模式;
- `'s/.*initcall ([^+]+)\+.+ returned ([0-9]+) after ([0-9]+) usecs/\1 \2 \3/g'`:使用正则表达式匹配每行中的函数名、返回值和执行时长,并将它们用空格分隔开来;
- `.*initcall`:匹配文本中任意字符,后跟一个空格和 `initcall` 字符串;
- `([^+]+)`:匹配函数名部分,中括号表示匹配其中任意一个字符,加号表示匹配前面的字符至少一次,这里的加号需要使用反斜杠转义;
- `\+.+ returned `:匹配 `+` 和 `returned` 之间的任意字符;
- `([0-9]+)`:匹配返回值部分,中括号表示匹配其中任意一个数字字符,加号表示匹配前面的字符至少一次;
- `after `:匹配 `after ` 字符串;
- `([0-9]+)`:匹配执行时长部分,同上;
- `usecs`:匹配 `usecs` 字符串;
- `/\1 \2 \3/g`:替换成三个匹配到的部分,中间用空格分隔,`g` 表示对每行文本都进行替换操作,而不是只替换第一个匹配项。
阅读全文