Chinaunix

标题: awk数组处理,数字字段加一列,谢谢。 [打印本页]

作者: 2013fish    时间: 2022-04-12 09:11
标题: awk数组处理,数字字段加一列,谢谢。
文件如下:

234
A001
A003
A005
A007
568
A123
A127
A129
A134
791
A567
A568
A561
A431
A436
A439


等等需要变成如下的。

有个规律,都是A开头,就是只要是A开头的字段,在后面需要加一列,数字就是它前面最上的那个数字,谢谢。

234
A001 234
A003 234
A005 234
A007 234
568
A123 568
A127 568
A129 568
A134 568
791
A567 791
A568 791
A561 791
A431 791
A436 791
A439 791


作者: legs    时间: 2022-04-12 13:24
本帖最后由 legs 于 2022-04-12 13:25 编辑
  1. perl -pe'/(^\d+)/?$l=$1:s#$# $l#' file
复制代码
  1. perl lnE'say=/^\d+/?$_:"$_ [        DISCUZ_CODE_1        ]"' file
复制代码


awk也差不多的用法,弄个临时变量来记录一下就行了。第二条被论坛识别错了,不会玩。

作者: 2013fish    时间: 2022-04-12 14:50
谢谢大神,好用!
作者: daixubinbin    时间: 2022-04-17 23:51
  1. [root@hecs-80021 20220417]# awk '{if($0~/^[0-9]+$/){s=$0;print $0} else {print $0,s}}' file
  2. 234
  3. A001 234
  4. A003 234
  5. A005 234
  6. A007 234
  7. 568
  8. A123 568
  9. A127 568
  10. A129 568
  11. A134 568
  12. 791
  13. A567 791
  14. A568 791
  15. A561 791
  16. A431 791
  17. A436 791
  18. A439 791
复制代码

作者: daixubinbin    时间: 2022-04-17 23:53
[root@hecs-80021 20220417]# awk '{if($0~/^[0-9]+$/){s=$0;print $0} else {print $0,s}}' file
234
A001 234
A003 234
A005 234
A007 234
568
A123 568
A127 568
A129 568
A134 568
791
A567 791
A568 791
A561 791
A431 791
A436 791
A439 791

作者: daixubinbin    时间: 2022-04-17 23:54
[root@hecs-80021 20220417]# awk '{if($0~/^[0-9]+$/){s=$0;print $0} else {print $0,s}}' file
234
A001 234
A003 234
A005 234
A007 234
568
A123 568
A127 568
A129 568
A134 568
791
A567 791
A568 791
A561 791
A431 791
A436 791
A439 791


作者: daixubinbin    时间: 2022-04-17 23:55
  1. awk '{if($0~/^[0-9]+$/){s=$0;print $0} else {print $0,s}}' file
复制代码





作者: daixubinbin    时间: 2022-04-17 23:57
  1. awk '{if($0~/^[0-9]+$/){s=$0;print $0} else {print $0,s}}' file
复制代码





作者: daixubinbin    时间: 2022-04-18 10:42
awk '{if($0~/^[0-9]+$/){s=$0;print $0} else {print $0,s}}' file
作者: wh7211    时间: 2022-06-09 15:59
回复 1# 2013fish


  1. cat 1
  2. 234
  3. A001
  4. A003
  5. A005
  6. A007
  7. 568
  8. A123
  9. A127
  10. A129
  11. A134
  12. 791
  13. A567
  14. A568
  15. A561
  16. A431
  17. A436
  18. A439

  19. awk '/^[0-9]+$/{a=$0}/^A/{$2=a}1' 1
  20. 234
  21. A001 234
  22. A003 234
  23. A005 234
  24. A007 234
  25. 568
  26. A123 568
  27. A127 568
  28. A129 568
  29. A134 568
  30. 791
  31. A567 791
  32. A568 791
  33. A561 791
  34. A431 791
  35. A436 791
  36. A439 791
复制代码

作者: ll251    时间: 2022-07-01 10:54
sed -r '/^[0-9]/{h};/^A/{G;s/\n/ /;}'  1




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2