Linux 命令实战(七)

2023-12-14 09:14:18 浏览数 (1)

如何使用sed替换文本test1中的双引号和单引号

代码语言:javascript复制
"wuyi","lisi"
'wuyi','lisi'
{"wuyi":"4","lisi":"5"}

替换双引号为单引号

代码语言:javascript复制
[root@linux-92778 data]# sed "s/"/'/g" test1 
'wuyi','lisi'
'wuyi','lisi'
{'wuyi':'4','lisi':'5'}

替换单引号为双引号

代码语言:javascript复制
[root@linux-92778 data]# sed "s/'/"/g" test1 
"wuyi","lisi"
"wuyi","lisi"
{"wuyi":"4","lisi":"5"}

替换json中的大括号

代码语言:javascript复制
[root@linux-92778 data]# sed "s/{|}//g" test1 
"wuyi","lisi"
'wuyi','lisi'
"wuyi":"4","lisi":"5"

linux 拿一个文件在另外一个文件找相同的内容

data1内容

代码语言:javascript复制
{"phone":"18633333333","code":"333333"}

{"phone":"18611111111","code":"111111"}

{"phone":"18655555555","code":"555555"}

{"phone":"18644444444","code":"444444"}

{"phone":"18622222222","code":"222222"}

data2内容

代码语言:javascript复制
18600000000
18633333333
18699999999
18611111111
18655555555

方法一

代码语言:javascript复制
[root@linux-92778 data]# cat data2 | while read line 
> do 
> grep $line data1 >> result
> done
[root@linux-92778 data]# cat result
{"phone":"18633333333","code":"333333"}
{"phone":"18611111111","code":"111111"}
{"phone":"18655555555","code":"555555"}

方法二(推荐)

代码语言:javascript复制
[root@linux-92778 data]# awk -F '"' '{if(ARGIND==1) phone[$4]=$0}{if(ARGIND>1 && ($1 in phone)) print phone[$1]}' data1 data2
{"phone":"18633333333","code":"333333"}
{"phone":"18611111111","code":"111111"}
{"phone":"18655555555","code":"555555"}
  • -F'"': 使用双引号作为字段分隔符。
  • if(ARGIND==1)phones[$4]=$0: 如果处理的是第一个文件 (ARGIND 表示当前文件的索引),则将以第四个字段(用双引号括起的内容)为键,整行为值存储在数组 phones 中。
  • if(ARGIND>1 && ($1 in phones))print phones[$1]: 如果处理的是第二个文件,并且第一个字段在数组 phones 中存在,则打印相应的数组值(即对应于第一个文件中的完整行)

0 人点赞