免费注册 查看新帖 |

Chinaunix

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

[文本处理] shell 循环问题,请在忙。 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2013-11-04 17:37 |只看该作者 |倒序浏览
for k in `cat  /root/address/test.txt`
   do
j=0
n=10
   while(( $j<20 ))
   do
   j=$(($j+1))
   n=$(($j*10))

done
echo $n $k
done
我想从test.txt 文件中,逐行读出,然后每行前加上数字。按10 20 30 ....这样加。该如何实现。
如果按上面的执行,结果是
200 abcdeeee
200 abcdweewe
200 ddfsslkkd
.......
我想要的是
10  abcdeeee
20 abcdweewe
30 abcdweewe  
......一直到200
如果echo 语句加在第一个done 前,又会把每一行全加一遍数字。
请大家帮帮忙,谢谢!

论坛徽章:
8
技术图书徽章
日期:2013-08-22 11:21:28未羊
日期:2015-01-19 22:22:25巳蛇
日期:2014-08-11 16:53:08子鼠
日期:2014-05-29 09:04:44摩羯座
日期:2014-04-11 14:15:07丑牛
日期:2014-01-24 12:41:28金牛座
日期:2013-11-21 17:38:28射手座
日期:2015-01-21 08:50:32
2 [报告]
发表于 2013-11-04 17:40 |只看该作者
本帖最后由 huang6894 于 2013-11-04 17:42 编辑
  1. awk '{print NR*10"\t"$0;if(NR==20)exit}' test.txt
复制代码

论坛徽章:
32
处女座
日期:2013-11-20 23:41:20双子座
日期:2014-06-11 17:20:43戌狗
日期:2014-06-16 11:05:00处女座
日期:2014-07-22 17:30:47狮子座
日期:2014-07-28 15:38:17金牛座
日期:2014-08-05 16:34:01亥猪
日期:2014-08-18 13:34:25白羊座
日期:2014-09-02 15:03:55金牛座
日期:2014-11-10 10:23:58处女座
日期:2014-12-02 09:17:52程序设计版块每日发帖之星
日期:2015-06-16 22:20:002015亚冠之塔什干火车头
日期:2015-06-20 23:28:22
3 [报告]
发表于 2013-11-04 17:54 |只看该作者
  1. awk 'NR<=20{$0=NR"0 "$0}1'
复制代码

论坛徽章:
0
4 [报告]
发表于 2013-11-04 18:15 |只看该作者
多谢了可以实现。
我把我需求说一下吧。这样还是实现不了。
我的目地是想把一个文件(a.txt) 中的内容,逐行读出,然后插入到b.txt中去。插入时,是b.txt ,每隔10行插入一行,从a.txt中读取出来的行,一共要插入200行。

论坛徽章:
780
金牛座
日期: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
5 [报告]
发表于 2013-11-04 18:16 |只看该作者
本帖最后由 Herowinter 于 2013-11-04 18:16 编辑

在while循环结束之后 $n当然是200了,
好像把echo放while循环里就可以了.
  1. for k in `cat  /root/address/test.txt`
  2.    do
  3. j=0
  4. n=10
  5.    while(( $j<20 ))
  6.    do
  7.    j=$(($j+1))
  8.    n=$(($j*10))
  9. echo $n $k
  10. done

  11. done
复制代码

论坛徽章:
0
6 [报告]
发表于 2013-11-04 18:26 |只看该作者
这样也不行。每行又重复,加了数字变量。
就会成这样
10  abcdeeee
10  abcdweewe
10 abcdweewe
20 abcdeeee
20 abcdweewe  
20 abcdweewe  
30 abcdeeee
30 abcdweewe  
30 bcdweewe  

论坛徽章:
0
7 [报告]
发表于 2013-11-04 18:27 |只看该作者
lylzgq 发表于 2013-11-04 18:15
多谢了可以实现。
我把我需求说一下吧。这样还是实现不了。
我的目地是想把一个文件(a.txt) 中的内容,逐 ...


只要实现这个功能就好了。

论坛徽章:
0
8 [报告]
发表于 2013-11-04 18:51 |只看该作者
哪儿们有空可以帮下忙。实现下面的功能
我的目地是想把一个文件(a.txt) 中的内容,逐行读出,然后插入到b.txt中去。插入时,是b.txt ,每隔10行插入一行,从a.txt中读取出来的行,一共要插入200行。

论坛徽章:
39
辰龙
日期:2013-08-21 15:45:192015亚冠之广州富力
日期:2015-05-12 16:34:52亥猪
日期:2015-03-03 17:22:00申猴
日期:2015-03-03 17:21:37未羊
日期:2014-10-10 13:45:41戌狗
日期:2014-06-17 09:53:29巨蟹座
日期:2014-06-12 23:17:17双鱼座
日期:2014-06-10 12:42:44寅虎
日期:2014-06-09 12:52:172015亚冠之卡尔希纳萨夫
日期:2015-05-24 15:24:35黄金圣斗士
日期:2015-12-02 17:25:0815-16赛季CBA联赛之吉林
日期:2017-06-24 16:43:52
9 [报告]
发表于 2013-11-04 19:17 |只看该作者
回复 8# lylzgq


目测一下:
  1. awk 'FNR==NR{a[NR*10]=$0;next}FNR%10==0{$0=$0"\n"a[FNR]}1'  a b   
复制代码

论坛徽章:
0
10 [报告]
发表于 2013-11-04 20:09 |只看该作者
实现不了啊
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP