免费注册 查看新帖 |

Chinaunix

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

[文本处理] 求助:文本内容指定位置换行 [复制链接]

论坛徽章:
4
程序设计版块每日发帖之星
日期:2015-10-10 06:20:00每日论坛发贴之星
日期:2015-10-10 06:20:00程序设计版块每日发帖之星
日期:2015-10-11 06:20:00程序设计版块每日发帖之星
日期:2015-10-25 06:20:00
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2015-10-07 09:32 |只看该作者 |倒序浏览
test.txt文件中的内容没有换行,想要把test.txt文件内容的每9位换一次行,得到new.txt文件。请问这个shell 命令应该怎样写,谢谢!

$cat test.txt
123456789987654321777777777999999999ddd

$cat new.txt
123456789
987654321
777777777
999999999
ddd

论坛徽章:
16
CU十二周年纪念徽章
日期:2013-10-24 15:41:3415-16赛季CBA联赛之广东
日期:2015-12-23 21:21:55青铜圣斗士
日期:2015-12-05 10:35:30黄金圣斗士
日期:2015-11-26 20:42:16神斗士
日期:2015-11-19 12:47:50每日论坛发贴之星
日期:2015-11-18 06:20:00程序设计版块每日发帖之星
日期:2015-11-18 06:20:002015亚冠之城南
日期:2015-11-10 19:10:492015亚冠之萨济拖拉机
日期:2015-10-28 18:47:282015亚冠之柏太阳神
日期:2015-08-30 17:21:492015亚冠之山东鲁能
日期:2015-07-07 18:48:39摩羯座
日期:2014-08-29 23:01:42
2 [报告]
发表于 2015-10-07 09:41 |只看该作者
  1. sed 's/\([a-zA-Z0-9]\{9,9\}\)/\1\n/g' file
复制代码

论坛徽章:
769
金牛座
日期:2014-02-26 17:49:58水瓶座
日期:2014-02-26 18:10:15白羊座
日期:2014-04-15 19:29:52寅虎
日期:2014-04-17 19:43:21酉鸡
日期:2014-04-19 21:24:10子鼠
日期:2014-04-22 13:55:24卯兔
日期:2014-04-22 14:20:58亥猪
日期:2014-04-22 16:13:09狮子座
日期:2014-05-05 22:31:17摩羯座
日期:2014-05-06 10:32:53处女座
日期:2014-05-12 09:23:11子鼠
日期:2014-05-21 18:21:27
3 [报告]
发表于 2015-10-07 10:03 |只看该作者
本帖最后由 Herowinter 于 2015-10-07 10:03 编辑

回复 1# robinhappiness

  1. grep -o ".\{1,9\}" test.txt
  2. 123456789
  3. 987654321
  4. 777777777
  5. 999999999
  6. ddd
复制代码

论坛徽章:
4
程序设计版块每日发帖之星
日期:2015-10-10 06:20:00每日论坛发贴之星
日期:2015-10-10 06:20:00程序设计版块每日发帖之星
日期:2015-10-11 06:20:00程序设计版块每日发帖之星
日期:2015-10-25 06:20:00
4 [报告]
发表于 2015-10-07 10:24 |只看该作者
回复 2# tc1989tc

谢谢!执行了一下您的命令,如果是数字和字母,可以正确的每9 byte换行。但是如果文件中有文字的话,好像不能正常换行,比如!
想要按照byte为单位,每9个byte换行,如果第9个byte和第10个byte之间出现汉字的话,需要把汉字分割两半,第9byte显示一半汉字,换行之后第一byte显示另一半汉字!谢谢!

$cat test.txt
123456789987654321777777777999999999ddd---汉字----wqejq23pjrqiaerfpqbbbbb

执行之后结果:

$cat new.txt
123456789
987654321
777777777
999999999
ddd---汉字-
---wqejq2
3pjrqiaer
fpqbbbbb

论坛徽章:
4
程序设计版块每日发帖之星
日期:2015-10-10 06:20:00每日论坛发贴之星
日期:2015-10-10 06:20:00程序设计版块每日发帖之星
日期:2015-10-11 06:20:00程序设计版块每日发帖之星
日期:2015-10-25 06:20:00
5 [报告]
发表于 2015-10-07 10:27 |只看该作者
回复 3# Herowinter


    谢谢回复!如果文件中有汉字的情况下,汉字出现在第9和第10个Byte的位置,怎样能将汉字分割?第9byte显示汉字左半部分,换行之后第一byte显示汉字右半部分!谢谢!

论坛徽章:
769
金牛座
日期:2014-02-26 17:49:58水瓶座
日期:2014-02-26 18:10:15白羊座
日期:2014-04-15 19:29:52寅虎
日期:2014-04-17 19:43:21酉鸡
日期:2014-04-19 21:24:10子鼠
日期:2014-04-22 13:55:24卯兔
日期:2014-04-22 14:20:58亥猪
日期:2014-04-22 16:13:09狮子座
日期:2014-05-05 22:31:17摩羯座
日期:2014-05-06 10:32:53处女座
日期:2014-05-12 09:23:11子鼠
日期:2014-05-21 18:21:27
6 [报告]
发表于 2015-10-07 11:04 |只看该作者
本帖最后由 Herowinter 于 2015-10-07 11:20 编辑

回复 5# robinhappiness

你需要的结果不是这个的话?

123456789
987654321
777777777
999999999
ddd---汉字-
---wqejq2
3pjrqiaer
fpqbbbbb

那是什么?

2个byte表示1个汉字,你要拆分成1个1个byte,你想要怎么显示结果呢?
个人感觉应该是乱码,没有意义。
   

论坛徽章:
4
程序设计版块每日发帖之星
日期:2015-10-10 06:20:00每日论坛发贴之星
日期:2015-10-10 06:20:00程序设计版块每日发帖之星
日期:2015-10-11 06:20:00程序设计版块每日发帖之星
日期:2015-10-25 06:20:00
7 [报告]
发表于 2015-10-07 12:16 |只看该作者
回复 6# Herowinter

比如第五行”汉”的后面是”膛”字,如果”膛”字全部显示在第五行的话,第五行就边成了10个byte换行了,
所以把”膛”字的左半部分”月”显示在第五行最末尾,膛字右半部分”堂”显示到第六行行首。
月和堂分割开之后各占一个byte。

想要的结果是:
123456789
987654321
777777777
999999999
ddd---汉月
堂----wqej
q23pjrqia
erfpqbbbb
b

论坛徽章:
30
申猴
日期:2014-04-10 09:43:532015年亚洲杯纪念徽章
日期:2015-03-20 14:40:232015亚冠之阿尔纳斯尔
日期:2015-06-02 18:59:042015亚冠之阿尔希拉尔
日期:2015-06-30 15:22:572015亚冠之大阪钢巴
日期:2015-07-20 10:44:332015亚冠之阿尔纳斯尔
日期:2015-10-28 14:57:5215-16赛季CBA联赛之新疆
日期:2015-12-25 10:18:45黑曼巴
日期:2016-06-26 21:39:5315-16赛季CBA联赛之山西
日期:2016-07-25 21:54:2715-16赛季CBA联赛之北京
日期:2016-10-27 12:07:2315-16赛季CBA联赛之八一
日期:2017-07-07 16:39:0915-16赛季CBA联赛之吉林
日期:2017-09-04 12:14:43
8 [报告]
发表于 2015-10-07 12:36 |只看该作者
回复 1# robinhappiness
awk -F '' '{for(i=1;i<=NF;i++) if(i%9==0) {print $i} else {printf $i}}' file


   

论坛徽章:
769
金牛座
日期:2014-02-26 17:49:58水瓶座
日期:2014-02-26 18:10:15白羊座
日期:2014-04-15 19:29:52寅虎
日期:2014-04-17 19:43:21酉鸡
日期:2014-04-19 21:24:10子鼠
日期:2014-04-22 13:55:24卯兔
日期:2014-04-22 14:20:58亥猪
日期:2014-04-22 16:13:09狮子座
日期:2014-05-05 22:31:17摩羯座
日期:2014-05-06 10:32:53处女座
日期:2014-05-12 09:23:11子鼠
日期:2014-05-21 18:21:27
9 [报告]
发表于 2015-10-07 13:01 |只看该作者
本帖最后由 Herowinter 于 2015-10-07 13:05 编辑

回复 7# robinhappiness

这个我不会,非左右的汉字你也能拆?
比如
123456789987654321777777777999999999ddd---国庆----wqejq23pjrqiaerfpqbbbbb

建议你看看locale和encoding

   

论坛徽章:
0
10 [报告]
发表于 2015-10-07 16:12 |只看该作者
汉字左右半拆的需求,是不是你自己yy的啊
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP