我正在寻找一个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
我的意思是,我需要第一个包含数字的字段,而不是最后一个,提取的所有数字都应以逗号(,
)分隔。
有人可以帮我得到吗?
您不需要脚本就可以完成这么简单的事情。您可以使用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] 删除。
我来说两句