提取出initcal 开关的行,并按after 后面的时间大小重新对文本排序,并在行首添加after后面的时间
时间: 2024-03-27 17:41:11 浏览: 21
可以使用以下命令来提取出包含 `initcall` 关键字的行,并按照 `after` 后面的时间大小进行排序,并在每行行首添加 `after` 后面的时间:
```bash
grep "initcall" file.txt | awk '{print $(NF-1), $0}' | sort -n | awk '{print $1, $NF}' | sed -E 's/[0-9]+ //g'
```
其中,`file.txt` 需要替换为实际的文件名。
该命令与之前的命令相比,在排序后使用了另一个 awk 命令来将 `after` 后面的时间和整行文本的顺序调换,然后在输出时使用了 sed 命令将时间部分去掉,只保留整行文本。
执行命令后,输出结果将会按照 `after` 后面的时间大小重新排序,并在每行行首添加 `after` 后面的时间。
相关问题
重来,提取出initcal 开关的行,并按after 后面的时间大小重新对文本排序,并在行首添加after后面的时间
可以使用以下命令来提取出包含 `initcall` 关键字的行,并按照 `after` 后面的时间大小进行排序,并在每行行首添加 `after` 后面的时间:
```bash
grep "initcall" file.txt | awk '{match($0, /after ([0-9]+) usecs/); print substr($0, RSTART + 6, RLENGTH - 12), $0}' | sort -n | awk '{print $1, substr($0, index($0, $2))}'
```
其中,`file.txt` 需要替换为实际的文件名。
该命令的具体解释如下:
- `grep "initcall" file.txt`:使用 grep 命令提取出包含 `initcall` 关键字的行;
- `awk '{match($0, /after ([0-9]+) usecs/); print substr($0, RSTART + 6, RLENGTH - 12), $0}'`:使用 awk 命令通过正则表达式匹配 `after` 后面的时间,并将其和整行文本一起输出。其中,`match($0, /after ([0-9]+) usecs/)` 表示在当前行中查找 `after` 后面的时间,并将其匹配结果保存到内置变量 `RSTART` 和 `RLENGTH` 中;`substr($0, RSTART + 6, RLENGTH - 12)` 表示从当前行中截取 `after` 后面的时间的字符串;
- `sort -n`:使用 sort 命令对提取出的时间进行排序,按照数字大小进行升序排列;
- `awk '{print $1, substr($0, index($0, $2))}'`:使用 awk 命令将 `after` 后面的时间和整行文本的顺序调换,并在行首添加时间。其中,`index($0, $2)` 表示查找整行文本中第二个字段(即包含 `initcall` 的那部分文本)的位置,然后使用 `substr()` 函数截取该位置之后的所有文本。
执行命令后,输出结果将会按照 `after` 后面的时间大小重新排序,并在每行行首添加 `after` 后面的时间。
提取出initcal 开关的行,并按after 后面的时间大小重新对文本排序
可以使用以下命令来提取出包含 `initcall` 关键字的行,并按照 `after` 后面的时间大小进行排序:
```bash
grep "initcall" file.txt | sed -E 's/.*after ([0-9]+) usecs/\1 &/g' | sort -n | sed -E 's/[0-9]+ //g'
```
其中,`file.txt` 需要替换为实际的文件名。
该命令的具体解释如下:
- `grep "initcall" file.txt`:使用 grep 命令提取出包含 `initcall` 关键字的行;
- `sed -E 's/.*after ([0-9]+) usecs/\1 &/g'`:使用 sed 命令将每行文本中 `after` 后面的时间提取出来,并将其与整行文本用空格分隔,然后输出。这里使用圆括号将 `[0-9]+` 匹配到的数字部分作为一个分组,`\1` 表示分组的内容,`&` 表示整行文本;
- `sort -n`:使用 sort 命令对提取出的时间进行排序,按照数字大小进行升序排列;
- `sed -E 's/[0-9]+ //g'`:使用 sed 命令将排序后的文本中的时间部分去掉,只输出整行文本。
执行命令后,输出结果将会按照 `after` 后面的时间大小重新排序,并只输出包含 `initcall` 关键字的行。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)