免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 3824 | 回复: 12

[文本处理] 删除文件内容开头的数字并且保留原格式 [复制链接]

论坛徽章:
0
发表于 2018-05-18 11:42 |显示全部楼层
请教一个问题,文本如下:
  1. 1 #!/usr/bin/expect
  2.   2
  3.   3 set passwd "mypasswd"
  4.   4 set timeout 60
  5.   5
  6.   6 if {$argc != 1} {
  7.   7     send "usage ./account.sh \$newaccount\n"
  8.   8     exit
  9.   9 }
  10. 10
  11. 11 set user [lindex $argv [expr $argc-1]]
  12. 12
  13. 13 spawn sudo useradd -s /bin/bash -g mygroup -m $user
  14. 14
  15. 15 expect {
  16. 16     "assword" {
  17. 17         send_user "sudo now\n"
  18. 18         send "$passwd\n"
  19. 19         exp_continue
  20. 20     }
  21. 21     eof
  22. 22     {
  23. 23         send_user "eof\n"
  24. 24     }
  25. 25 }
  26. 26
  27. 27 spawn sudo passwd $user
  28. 28 expect {
  29. 29     "assword" {
  30. 30         send "$passwd\n"
  31. 31         exp_continue
  32. 32     }
  33. 33     eof
  34. 34     {
  35. 35         send_user "eof"
  36. 36     }
  37. 37 }
  38. 38
  39. 39 spawn sudo smbpasswd -a $user
  40. 40 expect {
  41. 41     "assword" {
  42. 42         send "$passwd\n"
  43. 43         exp_continue
  44. 44     }
  45. 45     eof
  46. 46     {
  47. 47         send_user "eof"
  48. 48     }
  49. 49 }
复制代码
想把每行开头的数字去掉,但是要保留原格式,试过使用awk '{x=2;while(x<=NF){printf "%s",$x;x++}printf "\n"}'但是整个文件的空格都没了。
请问该怎么做呢?

论坛徽章:
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
发表于 2018-05-18 13:26 |显示全部楼层
本帖最后由 christmas1102 于 2018-05-18 14:06 编辑

  1. sed -rn 's#\s*[0-9]+\s?##p' file
  2. awk '{sub(/^ *[0-9]+ ?/,"")}1' file
复制代码


论坛徽章:
0
发表于 2018-05-18 14:15 |显示全部楼层
回复 2# christmas1102

非常感谢!学习了!

论坛徽章:
8
CU十四周年纪念徽章
日期:2017-08-28 17:16:1915-16赛季CBA联赛之北控
日期:2018-03-29 11:39:0615-16赛季CBA联赛之上海
日期:2018-05-21 10:46:10技术图书徽章
日期:2018-09-03 13:54:18技术图书徽章
日期:2018-09-03 13:54:2815-16赛季CBA联赛之四川
日期:2020-10-15 09:21:4720周年集字徽章-20	
日期:2020-10-28 13:53:0220周年集字徽章-庆
日期:2020-10-28 14:09:12
发表于 2018-05-18 14:16 |显示全部楼层
本帖最后由 龙牙地主天 于 2018-05-18 14:18 编辑

回复 1# 921129732

  1. sed -r 's/^ *[0-9]+(.*)/\1/g' file
复制代码

论坛徽章:
0
发表于 2018-05-18 15:11 |显示全部楼层
回复 4# 龙牙地主天

感谢!美中不足的就是每行行首都会有一个空格

论坛徽章:
25
程序设计版块每日发帖之星
日期:2016-05-03 06:20:0015-16赛季CBA联赛之八一
日期:2018-07-05 10:34:09黑曼巴
日期:2018-07-06 15:19:5015-16赛季CBA联赛之佛山
日期:2018-08-03 13:19:3315-16赛季CBA联赛之山西
日期:2018-08-07 19:46:2315-16赛季CBA联赛之广夏
日期:2018-08-08 19:31:5015-16赛季CBA联赛之青岛
日期:2018-11-26 15:21:5015-16赛季CBA联赛之上海
日期:2018-12-11 09:45:3219周年集字徽章-年
日期:2020-04-18 23:54:5215-16赛季CBA联赛之深圳
日期:2020-04-19 21:40:19黑曼巴
日期:2022-04-03 17:55:1315-16赛季CBA联赛之八一
日期:2018-07-03 16:56:46
发表于 2018-05-18 16:51 |显示全部楼层
回复 1# 921129732


  1. awk '{sub("^ *[0-9]+($| )","")}1' file
复制代码

论坛徽章:
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
发表于 2018-05-18 17:37 |显示全部楼层
回复 1# 921129732

awk '{x=2;while(x<=NF){printf "%s ",$x;x++}printf "\n"}' 1.kon.kf

论坛徽章:
0
发表于 2018-05-19 09:55 |显示全部楼层
回复 6# wh7211

谢谢!

论坛徽章:
0
发表于 2018-05-19 09:58 |显示全部楼层
回复 7# 1cpuer

这个貌似不行额,跟我举的例子是一样的,会变更整体的格式,不过命令之间有了空格。谢谢!

论坛徽章:
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
发表于 2018-05-19 10:06 |显示全部楼层
本帖最后由 1cpuer 于 2018-05-19 12:50 编辑

回复 9# 921129732

awk  '{for(x=2;x<=NF;x++)printf "%s \n" ,$x}' 1.kon.kf
这条跑出来和上一条效果近似
只是楼主的 x++ 写的太迷眼
有 while 就是循环语句不能乱测试


awk  -vFS='^  *[0-9][0-9]* ' '{for(x=2;x<=NF;x++)printf "%s " ,$x}{print ""}' 1.kon.kf
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP