查看: 1496|回复: 2
收起左侧

[软件] Bash脚本问题请教

[复制链接]
tonysung211
发表于 2023-9-19 12:07:10 | 显示全部楼层 |阅读模式
最近想写个脚本减少工作量,但卡在了一个文本处理问题上,在此请教大家,还望不吝赐教。
问题是这样的:
有一由数字构成的单行文本文件,以空格为分隔符,如下:

1 2 3 4 5 6 7 8 9 10


我想要达成的最终目标是,
1. 对数列中的每一项分別加一个常数,然后把结果按原样追加回文件中去(或者也可以建立新的单行文件存储结果)
2. 可以重复以上过程任意次数;
例如,对上述数列的每一项加上一个12,然后把结果写回文件,使文件內容变为:
1 2 3 4 5 6 7 8 9 10
13 14 15 16 17 18 19 29 21 22
25 26 27 28 29 30 31 32 33 34
...
一直处理下去,直到指定次数为止
我遇到的主要困难是,无法一次一个地把数据读入脚本处理(手太生),所以在此请教大家,像这种情况,怎样读数据入脚本是最好的呢?
多谢各位~


zerosu6652
发表于 2023-9-21 15:04:20 | 显示全部楼层
本帖最后由 zerosu6652 于 2023-9-21 15:06 编辑

定义test.txt的内容为:
  1. 1 2 3 4 5 6 7 8 9 10
复制代码

定义test.bash的内容为:
  1. #!/bin/bash
  2. x=5
  3. y=0
  4. while [ "$y" -lt "$x" ]; do
  5.   tail -n 1 test.txt > temp.txt
  6.   awk -v z=12 '{print $1+z,$2+z,$3+z,$4+z,$5+z,$6+z,$7+z,$8+z,$9+z,$10+z}' temp.txt >> test.txt
  7.   rm -f temp.txt
  8.   y=$((y+1))
  9. done
复制代码

脚本中的变量x就是要循环的次数,执行脚本即可,test.txt的内容将变为:
  1. 1 2 3 4 5 6 7 8 9 10
  2. 13 14 15 16 17 18 19 20 21 22
  3. 25 26 27 28 29 30 31 32 33 34
  4. 37 38 39 40 41 42 43 44 45 46
  5. 49 50 51 52 53 54 55 56 57 58
  6. 61 62 63 64 65 66 67 68 69 70
复制代码


评分

参与人数 1人气 +3 收起 理由
tonysung211 + 3 感谢解答: )

查看全部评分

tonysung211
 楼主| 发表于 2023-9-23 14:22:40 | 显示全部楼层
zerosu6652 发表于 2023-9-21 15:04
定义test.txt的内容为:

定义test.bash的内容为:

非常感谢!! 可帮了俺大忙啦~
您需要登录后才可以回帖 登录 | 快速注册

本版积分规则

手机版|杀毒软件|软件论坛| 卡饭论坛

Copyright © KaFan  KaFan.cn All Rights Reserved.

Powered by Discuz! X3.4( 沪ICP备2020031077号-2 ) GMT+8, 2024-12-27 10:19 , Processed in 0.124535 second(s), 17 queries .

卡饭网所发布的一切软件、样本、工具、文章等仅限用于学习和研究,不得将上述内容用于商业或者其他非法用途,否则产生的一切后果自负,本站信息来自网络,版权争议问题与本站无关,您必须在下载后的24小时之内从您的电脑中彻底删除上述信息,如有问题请通过邮件与我们联系。

快速回复 客服 返回顶部 返回列表