用sed把每一行第一对小括号里的字符删掉

(abc)
aa (a(d)xe)) (b) (c)fff
asdf(aakk
e)zz (ala)oe 这是inputfile 的内容,怎样才能得到

aa xe)) (b) (c)fff
asdf(aakk
e)zz oe
求解答!!!
sed把每一行第一对小括号里的字符删掉

 

可以使用以下命令来提取出包含 `initcall` 关键字的行,删掉所有的方括号及面的内容,并按照 `after` 后面的时间大小进行排序,并在每行行首添加 `after` 后面的时间: ```bash grep "initcall" file.txt | sed -E 's/\[[^]]+\] //' | 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` 关键字的行; - `sed -E 's/\[[^]]+\] //'`:使用 sed 命令删除每行文本中所有的方括号及面的内容; - `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` 后面的时间,同时删除了每行文本中的所有方括号及面的内容。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值