Linux 文本替换 字符串替换 221012笔记
Linux 文本替换 字符串替换
用 sed
命令进行文本字符串替换
公式 sed s/被替换/替换/g
或 sed -e s/被替换/替换/g
或 sed --expression s/被替换/替换/g
或 sed --expression=s/被替换/替换/g
g
表示全局, 没有则只替换第一个,
也可以用数字,表示第几个,s/a/b/2
将第2个a换成b可加单双引号或不加
sed "s/被替换/替换/g"
或sed 's/被替换/替换/g'
在有特殊字符时,必须加单双引号
例如- 在有 空格或
;
分号等情况下,要加用 单'
或双"
引号 - 在有
$
等字符的情况下, 必须,只能加'
单引号
- 在有 空格或
可加
-e
空格 或--expression
空格 或-expression=
不加空格
例如替换所有 a 为 B
sed s/a/B/g
等效sed 's/a/B/g'
等效sed "s/a/B/g"
等效sed -e s/a/B/g
等效sed --expression s/a/B/g
等效sed --expression=s/a/B/g
等效sed -e 's/a/B/g'
等效sed --expression "s/a/B/g"
等效sed --expression='s/a/B/g'
如果有多个脚本(expression/scripts), 则必须加
-e
或--expression
或者用大括号(花括号){}
包裹,以分号分隔
例如先将 a换b, 再 b换c , c换d , d换e , e换E , E换D , D换C , C换B , B换A
sed -e s/a/b/g -e "s/b/c/g" -e 's/c/d/g' -e s/d/e/g --expression s/e/E/g --expression "s/E/D/g" --expression 's/D/C/g' --expression=s/C/B/g --expression='s/B/A/g'
测试echo aaaaaaaaa | sed -e s/a/b/g -e "s/b/c/g" -e 's/c/d/g' -e s/d/e/g --expression s/e/E/g --expression "s/E/D/g" --expression 's/D/C/g' --expression=s/C/B/g --expression='s/B/A/g'
echo aaaaaaaaa | sed '{s/a/b/g; ; ; ; ;s/b/c/g;s/c/d/g;s/d/e/g;;;s/e/E/g;;s/E/D/g;;s/D/C/g;s/C/B/g;s/B/A/g; }'
如果不带
g
则只替换第一个echo aaaaaaaaa | sed -e s/a/b/ -e "s/b/c/" -e 's/c/d/' -e s/d/e/ --expression s/e/E/ --expression "s/E/D/" --expression 's/D/C/' --expression=s/C/B/ --expression='s/B/A/'
要想删除指定字符串的话, 就将替换内容设为空
例如:
删除所有 abc :sed s/abc//g
echo abcabcabcdefg | sed s/abc//g
删除第一个 abc :
sed s/abc//
echo abcabcabcdefg | sed s/abc//
大括号
{}
(花括号) 用来包裹多个命令,用分号;
分隔{命令1;命令2;命令3;...}
- 当大括号内只有一个命令时, 可以不加引号
- 当大括号内有多个命令,用分号
;
分隔时, 必须加 单或双 引号echo aaa | sed "{s/a/A/;s/aa/B/}" # 得到 AB
也可有空格
echo aaa | sed " { s/a/A/ ; s/aa/B/ } " # 得到 AB
echo aaaaaaaaa | sed '{s/a/b/g; ; ; ; ;s/b/c/g;s/c/d/g;s/d/e/g;;;s/e/E/g;;s/E/D/g;;s/D/C/g;s/C/B/g;s/B/A/g; }'
用sed
修改来自文件的内容
公式: sed s/被替换/替换/g 文件
, 文件必须放在最后
例如: 替换来自文件中的 aaa 变 BBB
sudo sed s/aaa/BBB/g 文件或
sudo sed "s/aaa/BBB/g" 文件或
sudo sed -e s/aaa/BBB/g 文件或
sudo sed --expression s/aaa/BBB/g 文件或
sudo sed --expression=s/aaa/BBB/g 文件或
sudo sed --expression="s/aaa/BBB/g" 文件或
sudo sed --expression='s/aaa/BBB/g' 文件也可以用管道
sudo cat 文件 | sudo sed --expression='s/aaa/BBB/g'
sudo cat 文件 | sudo sed --expression 's/aaa/BBB/g'
sudo cat 文件 | sudo sed --e 's/aaa/BBB/g'
sudo cat 文件 | sudo sed 's/aaa/BBB/g'
sudo cat 文件 | sudo sed s/aaa/BBB/g
加 -i
或 --in-place
选项, 就会对文件进行修改
-i[SUFFIX], --in-place[=SUFFIX]
-i
或--in-place
选项后如果有后缀, 就会以文件名加后缀给文件做个备份, 再修改
-i
与后缀紧连,没有空格, 如-i.bak
--in-place
与后缀通过等号=
连接 , 如--in-place=.bak
printf "aaa\n" > 文件; cat 文件;
sudo sed 's/aaa/bbb/' "文件" -i ;
cat 文件;
sudo sed 's/bbb/ccc/' 文件 --in-place ;
cat "文件";
sudo sed 's/ccc/ddd/' 文件 -i.bak1;
cat 文件;
sudo sed 's/ddd/eee/' "文件" --in-place=.bak2;
cat "文件";
用sed
修改来自变量的内容
echo
默认会加换行, 加上-n
,可不换行 , 也可以用printf
-echo $变量
屏幕输出时,会将连续空格合并为一个, 可以用echo "$变量"
原样输出
printf $变量
输出时,变空格会变成参数分隔, 所以加双引号 printf "$变量"
v=`printf "$v" | sed s/待替换内容/替换内容/g`或
v=$(printf "$v" | sed s/待替换内容/替换内容/g)或
v=$(echo -n "$v" | sed s/待替换内容/替换内容/g)
例子:
v='hello World' ; echo "$v";\
v=`echo -n "$v" | sed s/h/H/`; echo "${v}"
v='Helloorld' ; echo "$v";\
v=`echo "$v" | sed 's/oo/o Wo/'`; echo "${v}"
v='World' ; echo "$v";\
v=`printf "$v" | sed 's/^/Hello /'`; echo "${v}"
v='Hello' ; echo "$v";\
v=`printf "$v" | sed 's/$/ World/'`; printf "${v}\n"
v='Hello' ; echo "$v";\
v=`printf "$v" | sed 's/$/\ \ \ \ \ \ World/'`; printf "${v}\n"
v='H o W d' ; echo "$v";\
v=`printf "$v" | sed '{s/ /ell/ ; s/ /orl/}'`; printf "${v}\n"
v='H o W d' ; echo "$v";\
v=`printf "$v" | sed '{\
s/ /l/7 ;\
s/ /r/6 ;\
s/ /o/5 ;\
s/ /l/3;\
s/ /l/2;\
s/ /e/1;\
}'`; printf "${v}\n"
例如移除环境变量PATH
中的指定字符串
export PATH=` printf "$PATH" | sed ' s/:\.//g ' ` ; echo "$PATH";
export PATH=` printf "$PATH" | sed ' s/:\/MyBashs//g ' ` ; echo "$PATH";
Linux 文本替换 字符串替换 221012笔记相关推荐
- linux shell 字符串替换字符,关于bash:在shell脚本中替换另一个字符串的一个子字符串...
我有"我爱苏西并结婚",我想把"苏西"改成"萨拉". #!/bin/bash firstString="I love Suzi a ...
- Linux shell 字符串替换
方法一 # [cdh01 root 09:57:39] [Thu Mar 25] $ str="hello world"# [cdh01 root 09:58:09] [Thu M ...
- linux sed 批量替换多个文件中的字符串
原文: http://blog.csdn.net/kauu/article/details/1757325 一.linux sed 批量替换多个文件中的字符串 sed -i "s/oldst ...
- linux shell 字符串操作(长度,查找,替换)详解 BASH
linux shell 字符串操作(长度,查找,替换)详解 在做shell批处理程序时候,经常会涉及到字符串相关操作.有很多命令语句,如:awk,sed都可以做字符串各种操作. 其实shell内置一系 ...
- linux c中字符替换函数,Linux C 支持正则表达式的字符串替换函数
[root@localhost src]# cat a.c /** * Linux C 支持正则表达式的字符串替换函数 * * Author: cnscn@163.com * Homepage: ww ...
- [sed] linux sed 批量替换字符串-转
比如,要将目录/modules下面所有文件中的zhangsan都修改成lisi,这样做: sed -i "s/zhangsan/lisi/g" `grep zhangsan -rl ...
- linux 给文件替换字符串/替换内容/替换某行 (shell,sed)
本文是要讲linux 不打开文档/文件的情况下,替换文本内容. 打开文档,在文档/文件内替换内容的,可以用vim,可参考这篇文章vim 替换文本 . 话题相关 #linux 文件替换字符串 #sed ...
- linux sed替换大小写,linux sed 批量替换字符串
一月 21, 2014 ( NO COMMENTS ) Linux下批量替换多个文件中的字符串的简单方法.用sed命令可以批量替换多个文件中的字符串. 命令如下: sed -i "s/原字符 ...
- Linux环境下字符串替换
介绍 字符串的替换操作是平时比较常用的操作, 将平时在Linux系统下开发使用到的字符串替换整理下来. 字符串替换 平时使用的字符串的替换主要有3种 vim编辑器 变量的替换 linux命令批量替换 ...
最新文章
- 一个老工程师对理工科学生的忠告
- 学习C#要养成的好习惯
- @Configuration与@Component区别
- 实现iframe_单点登录的三种实现方式,你会几种?
- 使用docker部署flask项目
- html设置照片模糊效果,CSS如何实现照片模糊?
- Docker-Oracle和物理机Oracle数据库性能测试
- Wait Event Disk file operations I/O
- dock run mysql v3_Docker入门(三) - 搭建mysql
- linux下adb连接不上解决方法
- CCF	2013-12-2 ISBN号码
- Oracle中动态SQL详解
- 通过sql脚本可以从数据库中查到数据,但是通过jdbc却获取不到
- (转)DPDK内存管理 02 -----初始化
- HTML5,不只是看上去很美(第四弹:可交互地铁线路图)
- 华为USG6000v防火墙双机热备综合实验
- 关于错误“未能加载文件或程序集”的错误的若干处理办法——对GAC的简单应用
- 重庆思庄-[Oracle] SYSAUX表空间WRH$表的清理
- servlet3.1规范翻译:第13章 安全
- thinkphp构架
热门文章
- AlignedReID: Surpassing Human-Level Performance in Person Re-Identification
- python3 关键词下载必应图片
- 在线版区间众数 hzw的代码。。
- 计算机网络笔记(王道考研) 第五章:传输层
- 解决忘记密码报错ERROR 1044 (42000): Access denied for user ‘‘@‘localhost‘ to database ‘mysql‘的办法
- greasemonkey 使用心得
- 植物大战僵尸经典android,植物大战僵尸经典版
- Minecraft 开服记录 自动备份
- c语言常见warning的消除方法及重要性
- 桌面图标注册表对应项