免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 3137 | 回复: 18
打印 上一主题 下一主题

[文本处理] 精准换行并排序 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2018-06-09 06:45 |只看该作者 |倒序浏览
本帖最后由 rtzd 于 2018-06-09 07:36 编辑

精准换行并排序,帮助下

提示:
如果相邻的两个空格之间只有纯数字,并且开头是数字1,且唯一只有7个数字,那么这个数字字符串肯定是正确的,不要将其拆分开。


要求:
1、全部是纯数字。
2、每一行中,只有纯数字1开头,并且每一行数字字符只有7个
3、只保留7位数字字符串

源:
  1. 130028113018111303770 1303771 1303772 13037731306013 1308439
  2. 130883613092811309455 1309456 1309603 1309609 13096241310812|
  3. |1318371 1319494 1319838 1319839 1319848 1319860 1319861 1320820
  4. 145924814592491478127 1478128 147812915082361508237 1508238
  5. |13547621354763 1354764135482013548211355090 13550911355092
  6. 180484318064911808077 18080781808079180817018081711808172
  7. 1898035189823018932311898232 1898233 1898234 1898235 1898236|
  8. 1898237 1898238 1898239 198081219908011990802
复制代码


结果:
  1. 1300281
  2. 1301811
  3. 1303770
  4. 1303771
  5. 1303772
  6. 1303773
  7. 1306013
  8. 1308439
  9. 1308836
  10. 1309281
  11. 1309455
  12. 1309456
  13. 1309603
  14. 1309609
  15. 1309624
  16. 1310812
  17. 1318371
  18. 1319494
  19. 1319838
  20. 1319839
  21. 1319848
  22. 1319860
  23. 1319861
  24. 1320820
  25. 1459248
  26. 1459249
  27. 1478127
  28. 1478128
  29. 1478129
  30. 1508236
  31. 1508237
  32. 1508238
  33. 1354762
  34. 1354763
  35. 1354764
  36. 1354820
  37. 1354821
  38. 1355090
  39. 1355091
  40. 1355092
  41. 1804843
  42. 1806491
  43. 1808077
  44. 1808078
  45. 1808079
  46. 1808170
  47. 1808171
  48. 1808172
  49. 1898035
  50. 1898230
  51. 1893231
  52. 1898232
  53. 1898233
  54. 1898234
  55. 1898235
  56. 1898236
  57. 1898237
  58. 1898238
  59. 1898239
  60. 1980812
  61. 1990801
  62. 1990802
复制代码



另:如果将其最终结果按照从小到大顺序,再排序一下,更完美






论坛徽章:
6
程序设计版块每日发帖之星
日期:2016-05-11 06:20:00操作系统版块每日发帖之星
日期:2016-05-12 06:20:00每日论坛发贴之星
日期:2016-05-12 06:20:00操作系统版块每日发帖之星
日期:2016-05-14 06:20:00程序设计版块每日发帖之星
日期:2016-05-31 06:20:00每日论坛发贴之星
日期:2016-05-31 06:20:00
2 [报告]
发表于 2018-06-09 07:58 |只看该作者
本帖最后由 1cpuer 于 2018-06-09 09:16 编辑

grep -Po '1[0-9]{6}'| sort -k1n


ls `which find`
/usr/bin/find
whereis grep                                                                                         
grep: /bin/grep
which grep  
grep: aliased to grep ...
touch 81.txt
echo "130883613092811309455 1309456 1309603 1309609 13096241310812|" | egrep -o '1[0-9]{6}' | sort -k1n

论坛徽章:
0
3 [报告]
发表于 2018-06-09 08:44 |只看该作者
1cpuer 发表于 2018-06-09 07:58
grep -Po '1[0-9]{6}'| sort -k1n





grep -Po  '1[0-9]{6}'  8.txt|sort -k1n >81.txt
bash: grep: 未找到命令
-k1n系统找不到指定的文件。

论坛徽章:
4
15-16赛季CBA联赛之青岛
日期:2018-07-09 14:17:2815-16赛季CBA联赛之八一
日期:2018-08-06 15:30:0515-16赛季CBA联赛之广东
日期:2018-08-09 09:11:2115-16赛季CBA联赛之佛山
日期:2019-02-14 09:26:31
4 [报告]
发表于 2018-06-09 13:45 |只看该作者
本帖最后由 christmas1102 于 2018-06-09 13:48 编辑
  1. awk -vRS="[ \n]" '{gsub(/\|/,"");a=length($0);b=a/7;c=1;if(b>1){for(i=1;i<=b;i++){print substr($0,c,7);c+=7}}else if(b==1){print}}' file2 |sort -n
复制代码

数字太多..眼花 sort 排序算了...

论坛徽章:
4
15-16赛季CBA联赛之青岛
日期:2018-07-09 14:17:2815-16赛季CBA联赛之八一
日期:2018-08-06 15:30:0515-16赛季CBA联赛之广东
日期:2018-08-09 09:11:2115-16赛季CBA联赛之佛山
日期:2019-02-14 09:26:31
5 [报告]
发表于 2018-06-09 13:52 |只看该作者
回复 3# rtzd

grep -Eo '1[0-9]{6}' file | sort -n
以前遇到过 -P 报错,系统里少装了点料,这段用扩展正则就行了,不用 P

论坛徽章:
0
6 [报告]
发表于 2018-06-09 13:59 |只看该作者
回复 4# christmas1102


awk -vRS="[ \n]" '{gsub(/\|/,"";a=length($0);b=a/7;c=1;if(b>1){for(i=1;i<=b;i++){print substr($0,c,7);c+=7}}else if(b==1){print}}' 8.txt>81.txt
bash: awk: 未找到命令



论坛徽章:
0
7 [报告]
发表于 2018-06-09 14:00 |只看该作者
回复 5# christmas1102


awk -vRS="[ \n]" '{gsub(/\|/,"");a=length($0);b=a/7;c=1;if(b>1){for(i=1;i<=b;i++){print substr($0,c,7);c+=7}}else if(b==1){print}}' 8.txt>81.txt
bash: awk: 未找到命令


论坛徽章:
4
15-16赛季CBA联赛之青岛
日期:2018-07-09 14:17:2815-16赛季CBA联赛之八一
日期:2018-08-06 15:30:0515-16赛季CBA联赛之广东
日期:2018-08-09 09:11:2115-16赛季CBA联赛之佛山
日期:2019-02-14 09:26:31
8 [报告]
发表于 2018-06-09 14:04 |只看该作者
回复 7# rtzd

好吧,那是我理解错了
不是-P出错
当我啥都没发,打扰了 ....

论坛徽章:
0
9 [报告]
发表于 2018-06-09 14:07 |只看该作者
回复 8# christmas1102


不好意思,可能是我的cygwin的问题。我再检查一下去。因刚重装的系统



论坛徽章:
4
15-16赛季CBA联赛之青岛
日期:2018-07-09 14:17:2815-16赛季CBA联赛之八一
日期:2018-08-06 15:30:0515-16赛季CBA联赛之广东
日期:2018-08-09 09:11:2115-16赛季CBA联赛之佛山
日期:2019-02-14 09:26:31
10 [报告]
发表于 2018-06-09 14:12 |只看该作者
本帖最后由 christmas1102 于 2018-06-09 14:13 编辑

回复 9# rtzd

cygwin 官网重新下个安装下吧
看了下我机器上的 CYGWIN

  1. Administrator@eason-PPC ~
  2. $ awk --version
  3. GNU Awk 4.2.0, API: 2.0 (GNU MPFR 3.1.6-p1, GNU MP 6.1.2)
复制代码

grep显然比awk简单,awk只是预防老年痴呆,grep能用你还是grep吧

您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP