免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 8964 | 回复: 9

[文本处理] 文本替换字符串,搞不定了还是要向大佬们学习一下 [复制链接]

论坛徽章:
0
发表于 2022-06-02 09:34 |显示全部楼层
本帖最后由 mir620 于 2022-06-02 11:24 编辑

{"hostname": "host1", "ip": "192.168.1.1", "username": "zzz", "password": "zzz", "ssh_port": 22},
{"hostname": "host2", "ip": "192.168.1.2", "username": "zzz", "password": "zzz", "ssh_port": 22},
{"hostname": "host3", "ip": "192.168.1.3", "username": "zzz", "password": "zzz", "ssh_port": 22}


想把用户名替换为:aaa
密码替换为:bbb
端口为:2222
账号密码端口不是固定的

ip 比较好用正则匹配已经知道咋搞了

还有最后一个字段,在做端口替换的时候,最后一行没有, 号

哎,多少年了,还是学艺不精。需要想大佬们学习啊


论坛徽章:
1
19周年集字徽章-年
日期:2020-10-29 09:39:21
发表于 2022-06-06 16:45 |显示全部楼层
  1. perl -pe's#username": "\K[^"]+(.*?word": ")[^"]+(.*?port": )\d+#aaa$1bbb${2}2222#'
复制代码

论坛徽章:
0
发表于 2022-06-06 21:31 |显示全部楼层
  1. awk 'gsub(/22}/,"2222}"){$6="\"aaa\",";$8="\"bbb\","}6' test
复制代码

论坛徽章:
0
发表于 2022-06-07 09:25 |显示全部楼层
回复 3# daixubinbin

方法还是不错的,但是。端口号、用户名、密码都不是固定的。

论坛徽章:
0
发表于 2022-06-07 09:29 |显示全部楼层
回复 2# legs

方案不错,厉害了但是这个perl命令最新化安装的操作系统不带这个命令,如果要使用的话,还必须安装,但是客户的环境系统平台  千千万,客户不可能为了咋。去安装这个命令。而且有些金融行业。还没有网络。 想要都适配还是非常困难的
不过还是谢谢,大佬。牛逼

论坛徽章:
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
发表于 2022-06-07 12:56 |显示全部楼层
本帖最后由 wh7211 于 2022-06-08 12:39 编辑

回复 1# mir620


  1. cat 1
  2. {"hostname": "host1", "ip": "192.168.1.1", "username": "zzz", "password": "zzz", "ssh_port": 22},
  3. {"hostname": "host2", "ip": "192.168.1.2", "username": "zzz", "password": "zzz", "ssh_port": 22},
  4. {"hostname": "host3", "ip": "192.168.1.3", "username": "zzz", "password": "zzz", "ssh_port": 22}

  5. awk '{a="^({\"hostname\": \")([^\"]+)(\", \"ip\": \")([^\"]+)(\", \"username\": \")([^\"]+)(\", \"password\": \")([^\"]+)(\", \"ssh_port\": )([^}]+)(})(,|)$";match($0,a,b);b[6]="aaa";b[8]="bbb";b[10]="2222";for(i=1;i<=12;i++){c=c?c""b[i]:b[i]};print c;c=""}' 1
  6. {"hostname": "host1", "ip": "192.168.1.1", "username": "aaa", "password": "bbb", "ssh_port": 2222},
  7. {"hostname": "host2", "ip": "192.168.1.2", "username": "aaa", "password": "bbb", "ssh_port": 2222},
  8. {"hostname": "host3", "ip": "192.168.1.3", "username": "aaa", "password": "bbb", "ssh_port": 2222}

  9. 变量说明(以下变量均可替换):
  10. b[2]:hostname的值,如host1。
  11. b[4]:ip的值,如192.168.1.1。
  12. b[6]:username的值,如zzz。
  13. b[8]:password的值,如zzz。
  14. b[10]:ssh_port的值,如22。
复制代码

论坛徽章:
0
发表于 2022-06-08 10:10 |显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
0
发表于 2022-09-06 16:37 |显示全部楼层
echo "{"hostname": "host1", "ip": "192.168.1.1", "username": "zzz", "password": "zzz", "ssh_port": 22}," | awk 'BIGEN{FS = "\""}{$6="\"aaa\",";$8="\"bbb\",";$NF=2222"}"}1'     

{hostname: host1, ip: 192.168.1.1, username: "aaa", password: "bbb", ssh_port: 2222}

论坛徽章:
0
发表于 2022-09-06 16:38 |显示全部楼层
echo "{"hostname": "host1", "ip": "192.168.1.1", "username": "zzz", "password": "zzz", "ssh_port": 22}," | awk 'BIGEN{FS = "\""}{$6="\"aaa\",";$8="\"bbb\",";$NF=2222"}"}1'   
   
{hostname: host1, ip: 192.168.1.1, username: "aaa", password: "bbb", ssh_port: 2222}

论坛徽章:
0
发表于 2022-09-14 16:14 |显示全部楼层
本帖最后由 gigabit 于 2022-09-21 12:28 编辑
  1. cat file | sed -r 's/("username": )"[^"]+"(, "password": )"[^"]+"/\1"aaa"\2"bbb"/g'
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP