rɑː*_*dʒɑ 4 bash text-processing
我正在寻找一个 bash 脚本。在文本文件中,我有如下数据:
+------+------
| Id | User |
+------+------+
| 8192 | root |
| 8194 | root |
| 8202 | root |
| 8245 | root |
| 8434 | root |
| 8754 | root |
| 8761 | root |
| 8762 | root |
| 8764 | root |
| 8771 | root |
+------+------+
Run Code Online (Sandbox Code Playgroud)
我想提取这样的数据:
8192,8194,8202,8245,8434,8754,8761,8762,8764
Run Code Online (Sandbox Code Playgroud)
我的意思是,我需要第一个包含数字的字段,而不是最后一个,并且所有提取的数字都应该用逗号 ( ,)分隔。
有人可以帮我拿吗?
这么简单的事情你不需要脚本。您可以使用awk:
awk '$2 ~ "^[0-9][0-9]*$" { print $2 }' file.txt | head -n -1 | awk '{print}' ORS=',' | sed 's/,$/\n/'
Run Code Online (Sandbox Code Playgroud)
一些解释:
awk '$2 ~ "^[0-9][0-9]*$" { print $2 }' file.txt- 从file.txt唯一的数字字段打印。head -n -1 - 删除最后一行/最后一个数字。awk '{print}' ORS=','- 将所有行连接成一行,每个数字以,.sed 's/,$/\n/'- 用,换行符替换 last 。或者,更短:
awk '$2 ~ "^[0-9][0-9]*$" { print $2 }' ORS=',' file.txt | sed 's/,[0-9]*,$/\n/'
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
16819 次 |
| 最近记录: |