标题: [文本处理] 【已解决】批处理怎样按文本每一行开头的数字序号大小排序? [打印本页]
作者: pan528 时间: 2013-7-12 10:37 标题: 【已解决】批处理怎样按文本每一行开头的数字序号大小排序?
本帖最后由 pcl_test 于 2016-11-3 20:25 编辑
有一文本,每行前二段是数字,如何按数字序号排序?如下:
原文本:- 1_102742_全国人民代表大会常务委员会关于中国银行业监督管理委员会履行原由中国人民银行履行的监督管理职责的决定
- 1_100_全国人民代表大会常务委员会关于海南省出席第七届全国人民代表大会代表团组成的决定
- 1_102_中华人民共和国传染病防治法
- 1_103_中华人民共和国行政诉讼法
- 2_12310_中共中央办公厅、国务院办公厅关于在国内公务活动中严禁用**宴请和有关工作餐的规定
- 2_12167_国务院关于发布《中华人民共和国一九八七年国库券条例》的通知
- 2_122765_全民所有制工业企业承包经营责任制暂行条例(修订)
- 3_1924_最高人民法院关于典当房屋回赎期限计算问题的批复
- 4_11571_**行政机关行政赔偿、刑事赔偿办法
- 4_11590600_大型运动会审计工作暂行规定
- 1_10_全国人民代表大会常务委员会批准国务院关于华侨捐资兴办学校办法的决议
- 1_1029721234_中华人民共和国澳门特别行政区第一届**推选委员会委员守则
- 1_1_关于中华人民共和国国都、纪年、国歌、国旗的决议
- 1_101_中华人民共和国进出口商品检验法
- 4_115887_火炬计划标志使用管理办法
- 2_12180_国务院关于违反财政法规处罚的暂行规定
- 2_12226_国家土地开发建设基金回收管理试行办法
- 2_1253070_中华人民共和国进出口关税条例
- 3_1926_最高人民法院关于产权人双方在“**”期间互换房屋各自行使权利多年后能否翻悔的批复
- 3_192250_最高人民**关于印发《关于进一步加强检察机关办案安全防范工作的意见》的通知
- 3_1925_最高人民法院关于韩荷敏等人与宁桂兰等人房屋继承案的批复
- 3_1923_最高人民法院关于房屋典当回赎中几个有关问题的批复
- 4_11596_合伙律师事务所管理办法
- 4_11595_律师资格考核授予办法
- 4_11563_提存公证规则
复制代码
排序后的效果:- 1_1_关于中华人民共和国国都、纪年、国歌、国旗的决议
- 1_10_全国人民代表大会常务委员会批准国务院关于华侨捐资兴办学校办法的决议
- 1_100_全国人民代表大会常务委员会关于海南省出席第七届全国人民代表大会代表团组成的决定
- 1_101_中华人民共和国进出口商品检验法
- 1_102_中华人民共和国传染病防治法
- 1_103_中华人民共和国行政诉讼法
- 1_102742_全国人民代表大会常务委员会关于中国银行业监督管理委员会履行原由中国人民银行履行的监督管理职责的决定
- 1_1029721234_中华人民共和国澳门特别行政区第一届**推选委员会委员守则
- 2_12167_国务院关于发布《中华人民共和国一九八七年国库券条例》的通知
- 2_12180_国务院关于违反财政法规处罚的暂行规定
- 2_12226_国家土地开发建设基金回收管理试行办法
- 2_12310_中共中央办公厅、国务院办公厅关于在国内公务活动中严禁用**宴请和有关工作餐的规定
- 2_122765_全民所有制工业企业承包经营责任制暂行条例(修订)
- 2_1253070_中华人民共和国进出口关税条例
- 3_1923_最高人民法院关于房屋典当回赎中几个有关问题的批复
- 3_1924_最高人民法院关于典当房屋回赎期限计算问题的批复
- 3_1925_最高人民法院关于韩荷敏等人与宁桂兰等人房屋继承案的批复
- 3_1926_最高人民法院关于产权人双方在“**”期间互换房屋各自行使权利多年后能否翻悔的批复
- 3_192250_最高人民**关于印发《关于进一步加强检察机关办案安全防范工作的意见》的通知
- 4_11563_提存公证规则
- 4_11571_**行政机关行政赔偿、刑事赔偿办法
- 4_11595_律师资格考核授予办法
- 4_11596_合伙律师事务所管理办法
- 4_115887_火炬计划标志使用管理办法
- 4_11590600_大型运动会审计工作暂行规定
复制代码
作者: PowerShell 时间: 2013-7-12 12:47
powershell代码,
Get-Content a.txt | sort-object
其他的也都行吧。
作者: terse 时间: 2013-7-12 12:49
- @echo off&setlocal enabledelayedexpansion
- %1(for /f "tokens=1* delims=_" %%i in ('%~s0 : ^|sort') do echo %%j)>2.txt&exit
- for /l %%a in (1 1 99) do set "k=!k! "
- for /f "tokens=1-2* delims=_" %%i in (1.txt) do (
- set "str1=!k!%%i"
- set "str2=!k!%%j"
- echo !str1:~-99!!str2:~-99!_%%i_%%j_%%k
- )
复制代码
作者: DAIC 时间: 2013-7-12 14:13
回复 2# PowerShell
学习了。我自己试验了一下,在顶楼数据最后加一行:
10_1_批处理
第一个下划线前面出现两位数字,排序会出错。10_x跑到2_x前面去了。
这种情况怎么解决呢?
作者: CrLf 时间: 2013-7-12 15:28
如果原来的标号是事先对齐的,可以直接这样:复制代码
否则需要先补位个:- @(gawk -F"_" "{printf(\"% 3d_% 10d_%s\n\" ,$1,$2,$3)}"|sort|sed "s/\s*\([0-9]*_\)/\1/g")<a.txt>b.txt
复制代码
作者: pan528 时间: 2013-7-13 22:26
回复 3# terse
谢谢!通过了测试。能解释一下“%~s0 : ”的含义吗?
作者: pan528 时间: 2013-7-14 17:05
回复 3# terse
请教:这个代码排序后,最后会出现一行“ECHO 处于关闭状态。”,有办法去除吗?
作者: terse 时间: 2013-7-14 17:25
回复 7# pan528
紧跟在echo 后面写上";"试 这样 echo;.............
作者: pan528 时间: 2013-7-15 12:32
回复 8# terse
谢谢,问题排除了!但不理解原因,能指教吗?
作者: CrLf 时间: 2013-7-15 14:41
gnu sort 真强大:复制代码
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |