shell中利用sed命令去掉文本中的单引号(‘)
2023-09-14 09:15:40 时间
在shell中进行字符替换或者去掉字符,一般使用sed命令。比如以下示例:
$ echo "2006-11-21 22:16:30" | sed 's/-//g' | sed 's/ //g' | sed 's/://g'
20061121221630
但是如果原始字符串中要被替换的是单引号('),那么此时使用以上命令就行不通了,如以下示例:
$ echo "Copyright (C) 2005 Paolo 'Blaisorblade' Giarrusso <blaisorblade@yahoo.it>" | sed 's/'//g'
>
可以看到,出现了'>'字符,说明认为还没有输入完,根本不能得到想要的结果。这种情况,即使在单引号前边加上转义字符(\)也是不可以的,如下所示:
$ echo "Copyright (C) 2005 Paolo 'Blaisorblade' Giarrusso <blaisorblade@yahoo.it>" | sed 's/\'//g'
>
可以看到,单引号前加入了转义字符,结果还是一样。那应该怎样解决这个问题?
这里要感谢以下链接提供的方法和思路:
其中提供了很多种方法,本文中只采用了其中的两种方法。
方法1:将sed最外层的单引号改为双引号
$ echo "Copyright (C) 2005 Paolo 'Blaisorblade' Giarrusso <blaisorblade@yahoo.it>" | sed "s/'//g"
Copyright (C) 2005 Paolo Blaisorblade Giarrusso <blaisorblade@yahoo.it>
可以看到,原来文本中Blaisorblade前后的2个单引号被去掉了。
方法2:对于单引号进行特殊处理
$ echo "Copyright (C) 2005 Paolo 'Blaisorblade' Giarrusso <blaisorblade@yahoo.it>" | sed 's/'"'"/'/g'
Copyright (C) 2005 Paolo Blaisorblade Giarrusso <blaisorblade@yahoo.it>
可以看到,结果和方法一种一致。
此方法解释如下:
's/':要进行替换操作,后紧跟匹配字符
"'":实际是这样" ' "(这里是让大家看得清楚,实际上不能加空格),两个双引号中间是单引号,即用双引号包裹单引号
/:分隔符
'/g':分隔符,全局替换。
测试脚本如下:
#!/bin/bash
ori_str="Copyright (C) 2005 Paolo 'Blaisorblade' Giarrusso <blaisorblade@yahoo.it>"
#echo "2006-11-21 22:16:30" | sed 's/-//g' | sed 's/ //g' | sed 's/://g'
#echo "Copyright (C) 2005 Paolo 'Blaisorblade' Giarrusso <blaisorblade@yahoo.it>" | sed "s/'//g"
str1=$(echo "$ori_str" | sed "s/'//g")
echo "str1: $str1"
str2=$(echo $ori_str | sed 's/'"'"/'/g')
echo "str2: $str2"
相关文章
- 解决在macOS下安装了python却没有pip命令的问题【经验总结】
- 【Linux】linux常用查看命令
- 每天一个linux命令(30): chown命令
- Linux压缩解压命令
- linux shell 脚本攻略学习19--sed命令详解
- Linux Shell脚本自动化编程实战- shell内置命令 break、continue
- Centos基本命令
- 高手排除肉鸡的历史命令
- Mysql私有增强性命令小记
- linux shell 脚本攻略学习5---find命令详解
- free命令的具体含义
- Linux Shell脚本自动化编程实战- shell并发
- 在python中调用shell命令并传递参数
- Linux zip命令:压缩文件或目录
- USG防火墙分片缓存和长连接命令
- ping命令-j选项的再次复习以及部分ICMP差错报文的构造
- python 命令执行文件传递参数
- 设计模式 - 命令模式(command pattern) 撤销(undo) 具体解释
- shell中的eval命令
- L69.linux命令每日一练 -- 第十章 Linux网络管理命令 -- arpping和telnet
- Linux系统之磁盘管理相关命令的基本使用
- Linux基础命令-netstat显示网络状态
- 理解Android编译命令
- vim 命令学习(基础篇)
- Shell 命令替换某个文件夹下特定字符串
- Linux中shell内外命令讲解(下)
- Linux中shell内外命令讲解(上)
- Computer:Linux系统简介(Linux的基本思想、特点、各版本详解、系统功能、与Windows比较)、常见操作(Shell命令、常用的快捷键)之详细攻略
- Shell脚本的学习心得和知识总结(五)|文件处理命令三剑客(sed、awk)
- Linux之find + sed组合替换命令