Chinaunix

标题: 求助怎么实现同时替换多个字符串! [打印本页]

作者: androw_chen    时间: 2019-03-28 17:26
标题: 求助怎么实现同时替换多个字符串!
    比如以下一行文本,怎么把1变成2,2变成8.。。。


原文本
    01  11  00  10  22  08  00  EE  01  44  45  4C  4C  00  00  00

替换后文本(需要的)
    02  22  00  20  88  08  00  EE  02  44  45  4C  4C  00  00  00




我用sed 's/1/2/g;s/2/8/g'替换,谁知有先后顺序,而不是同时;结果就变成

这不是我想要的呀:
   08  88  00  80  88  08  00  EE  08  44  45  4C  4C  00  00  00

请教坛友们有什么好的方法~tks了


作者: 本友会机友会摄友会    时间: 2019-03-28 19:39
提示: 作者被禁止或删除 内容自动屏蔽
作者: androw_chen    时间: 2019-03-29 10:30
回复 2# 本友会机友会摄友会

只是举个例子,现实应用中要变的很多;8也要变成别的值的! 所以你说的并不可取, 不过还是TKS!

作者: cfwyy    时间: 2019-03-29 13:32
python字符串maketrans,translate方法
test.py
  1. #!/usr/bin/python3
  2. oldstr="01 11 00 10 22 08 00 EE 01 44 45 4c 4c 00 00 00"
  3. table="".maketrans("12","28")
  4. newstr=oldstr.translate(table)
  5. print(newstr)
复制代码
  1. ./test.py
  2. 02  22  00  20  88  08  00  EE  02  44  45  4C  4C  00  00  00
复制代码

作者: jzsjm1002    时间: 2019-03-29 16:01
回复 1# androw_chen

和2楼的思路是一样 对2做一个标记
  1. sed 's/2/*/g;s/1/2/g;s/\*/8/g'
复制代码



作者: legs    时间: 2019-04-01 16:41
只用一个替换,中间的自己构建
作者: leowang119    时间: 2019-04-17 10:32
假设文件名为1.txt,只要执行cat 1.txt | tr '12'  '28' >change.txt
无论多少个需要替换都可以的
作者: leowang119    时间: 2019-04-17 10:33
假设文件名为1.txt,只要执行cat 1.txt | tr '12'  '28' >change.txt
无论多少个需要替换都可以的


作者: Jackis    时间: 2019-04-19 16:05
sed -e 's/2/8/g' -e 's/1/2/g'
向大佬们学习。
作者: androw_chen    时间: 2019-04-19 16:42
回复 8# leowang119

~tks!看似怎么简单,就难住我了

作者: moperyblue    时间: 2019-05-21 13:50

  1. sed 'y/12/28/'
复制代码

  1. tr '12' '28'
复制代码





欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2