linux, 用awk 打印 u_linlon_v5/c0_u_core/u_logic/gen_me_u_me/gen_rme_0__u_rme/u_data/s_preject_ref_buf_wdata_reg_31_/D,倒数第二个/前的所有内容
时间: 2023-10-14 11:04:51 浏览: 84
linux_programing.rar_Linux/Unix编程_Unix_Linux_
可以使用 awk 的 split 函数和数组操作来实现:
```
awk -F'/' '{split($NF,a,"_"); for(i=1;i<=NF-2;i++) printf("%s/", $i); print a[1]}' u_linlon_v5/c0_u_core/u_logic/gen_me_u_me/gen_rme_0__u_rme/u_data/s_preject_ref_buf_wdata_reg_31_/D
```
输出:
```
u_linlon_v5/c0_u_core/u_logic/gen_me_u_me/gen_rme_0__u_rme/u_data/
```
解释:
- `-F'/'` 指定分隔符为 `/`。
- `split($NF,a,"_")` 将最后一个字段以 `_` 分隔,存储到数组 a 中。
- `for(i=1;i<=NF-2;i++) printf("%s/", $i)` 循环输出前面所有的字段,最后一个不输出,用 `/` 分隔。
- `print a[1]` 输出数组 a 的第一个元素。
阅读全文