使用bash从文本文件中提取数据

ɑː

我正在寻找一个bash脚本。在文本文件中,我有如下数据:

+------+------
| Id   | User | 
+------+------+
| 8192 | root | 
| 8194 | root |
| 8202 | root |
| 8245 | root | 
| 8434 | root |  
| 8754 | root | 
| 8761 | root | 
| 8762 | root | 
| 8764 | root | 
| 8771 | root | 
+------+------+

我想像这样提取数据:

8192,8194,8202,8245,8434,8754,8761,8762,8764

我的意思是,我需要第一个包含数字的字段,而不是最后一个,提取的所有数字都应以逗号(,分隔

有人可以帮我得到吗?

拉杜·拉迪亚努(RaduRădeanu)

您不需要脚本就可以完成这么简单的事情。您可以使用awk

awk '$2 ~ "^[0-9][0-9]*$" { print $2 }' file.txt | head -n -1 | awk '{print}' ORS=',' | sed 's/,$/\n/'

一些解释:

  • awk '$2 ~ "^[0-9][0-9]*$" { print $2 }' file.txt-file.txt仅从数字字段中打印
  • head -n -1 -删除最后一行/最后一个号码。
  • awk '{print}' ORS=','-将所有行连接在一行中,每个数字之间用分隔,
  • sed 's/,$/\n/'-用,换行符替换最后一个。

或者,更短:

awk '$2 ~ "^[0-9][0-9]*$" { print $2 }' ORS=',' file.txt | sed 's/,[0-9]*,$/\n/'

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章