文本某个字段值如何替换

发布于 2022-10-15 09:22:06 字数 809 浏览 18 评论 0

linux 下一个文件 a.log 内容如下 (有3个字段, 每个字段值间距空格是一样的 )
id             a        b
121212   354   erere
23343    ww322  erer
...
.....

只有2行并且 每行只有1个数字.

现在我在脚本里
1 动态的把第某行的某个字段的值替换成某个值  (比如第2行的a 字段值换位'45454')  比如update a set a='45454' where id=2
   动态的把符合某个条件的某行的某个字段的值替换成某个值  (比如当b='erer' 的行的a 字段值换位'45454')  类似update a set a='45454' where b='erer'
   或者同时把 第某行的a b  字段(等等字段,实际上上面是简化的 实际还有10多个整型字段)同时替换为一个值'45454'   比如update a set a='45454' ,b ='45454' where id=2

2 动态的他某个字段值全部换为一个值'45454'  类似sql  语句 update a set a='45454'

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

唱一曲作罢 2022-10-22 09:22:06

本帖最后由 yinyuemi 于 2011-04-17 10:35 编辑

回复 1# liyihongcug

    简单写了下,你测试下行不?

用法: ./sh [行数] [a列修改值,如果不修改,输入"_"] [b列修改值,如果不修改,输入"_"] [log文件名]

  1. #!/bin/bash
  2. id=$(($1+1)) # $1 为1,2
  3. #  判断$2和$3 是否为"_", 如果是重新赋值,不过不是将$2 和 $3 分别赋值给变量a 和 b
  4. if [ "$2" == "_" ]
  5. then
  6. a=`echo "\\3"`
  7. else
  8. a=$2
  9. fi
  10. if [ "$3" == "_" ]
  11. then
  12. b=`echo "\\5"`
  13. else
  14. b=$3
  15. fi
  16. file=$4  # 文件名
  17. # 按条件修改文件," -i ": 直接修改源文件
  18. sed -i "$id s/\([^ ]*\)\( *\)\([^ ]*\)\( *\)\(.*\)/\1\2$a\4$b/" $file

复制代码测试结果:

  1. ./sh 1 4545 _ logfile
  2. cat logfile
  3. id             a        b
  4. 121212   4545   erere
  5. 23343    ww322  erer

复制代码

初见 2022-10-22 09:22:06

估计楼主很难得到答案.因为表述的不明显

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文