从特定列获取特定行的值

时间:2016-08-12 17:30:20

标签: linux bash cut

我想要的是使用以下格式提取表格列表

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

从区域我想得到region1,region2。

我到目前为止所尝试的是

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

 Region  

 region1 

有什么想法吗?

返回

的sed命令

1 个答案:

答案 0 :(得分:1)

我不确定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