linux - 从特定列获取特定行的值

标签 linux bash cut

我想要的是提取具有以下格式的表的列表

+---------+---------------+-------------+
| Region  | Parent Region | Description |
+---------+---------------+-------------+
| region1 | None          |             |
| region2 | None          |             |
+---------+---------------+-------------+

我想从区域中获取区域 1、区域 2。

到目前为止我尝试过的是

$ cat file |cut -d'+' -f1|cut -d'|' -f2

 Region  

 region1 

有什么想法吗?

返回的sed命令

最佳答案

我不确定 sed 是否是解决此问题的正确工具,而不是原生数据库工具,但你可以:

sed -nE '3,$ s/^\|[[:blank:]]*([^[:blank:]|]*).*/\1/p' file.txt
  • 3,$只做第3行到最后的操作

  • ^\|[[:blank:]]*([^[:blank:]|]*).* 在开头匹配 |然后是空格(如果有的话),捕获的组包含所需的部分

  • 在替换中我们使用了第一个(唯一的)捕获组,\1

示例:

$ cat file.txt
+---------+---------------+-------------+
| Region  | Parent Region | Description |
+---------+---------------+-------------+
| region1 | None          |             |
| region2 | None          |             |
+---------+---------------+-------------+

$ sed -nE '3,$ s/^\|[[:blank:]]*([^[:blank:]|]*).*/\1/p' file.txt
region1
region2

关于linux - 从特定列获取特定行的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38923533/

相关文章:

python守护进程信号不起作用

linux - 如何在 bash 中将数组元素初始化为 0?

linux - "ypcat"和 "ypmatch username passwd"在服务器上更改后不一致

linux - Linux磁盘I/O如何处理不同大小的文件

linux - 使用 `at' 执行 bash 脚本

linux - 这个 bash 脚本中的以下行是做什么的?

ios - 如何动态获取IOS模拟器设备的UID,然后安装到那个设备中

R cut() 导致零的奇数处理

python - 在 Pandas 中创建一个带有标签的列来对 DataFrame 进行分区。

bash - 删除第 3 个字符等于数字的行