shell中利用sed命令去掉文本中的单引号(‘)
2023-09-14 09:09:19 时间
在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"
相关文章
- Android Java执行Shell命令
- shell脚本--文件查找之find命令
- [Aaronyang] 写给自己的WPF4.5 笔记13[二维自定义控件技巧-可视化状态实战,自定义容器,注册类命令,用户控件补充]
- Linux中shell命令的用法和技巧
- 使用CMD 命令创建指定大小的文件
- linux shell 脚本攻略学习19--sed命令详解
- Linux Shell脚本自动化编程实战- shell内置命令 break、continue
- rman命令学习-tina(下)
- 安装cdh5.0执行impala-shell命令报impala_shell.py文件找不到
- Shell - set命令
- 重新点亮shell————sed其他命令[十一]
- 在python中调用shell命令并传递参数
- docker命令:删除所有为stop状态的docker容器
- [Shell]Bash基本功能:历史命令 & 别名 & Bash快捷键
- Computer:Linux系统简介(Linux的基本思想、特点、各版本详解、系统功能、与Windows比较)、常见操作(Shell命令、常用的快捷键)之详细攻略
- Linux复习资料(三)、Shell命令
- Hadoop Shell 命令详解
- shell find 命令 find命令报错 find: paths must precede expression:
- 无法绕开的cut, awk, sed命令
- 在一个shell中查看管理 任务(前台和后台)/工作jobs 的命令
- L11.linux命令每日一练 -- 第二章 文件和目录操作命令 -- rename和basename命令
- 终端一行命令更换ubuntu国内镜像源
- JETSON NANO 查看 CUDA 版本:NVCC -V 报错:BASH: NVCC: 未找到命令
- Linux 下shell命令生成随机字符串——筑梦之路
- SQL Server中关于表的基本命令
- Linux好用命令之free命令