sed命令笔记

Sed 笔记

命令格式

sed的命令格式:sed [options] 'command' file(s);
sed的脚本格式:sed [options] -f scriptfile file(s);

选项

  • -e :直接在命令行模式上进行sed动作编辑,此为默认选项;
  • -f :将sed的动作写在一个文件内,用–f filename 执行filename内的sed动作;
  • -i :直接修改文件内容;
  • -n :只打印模式匹配的行;
  • -r :支持扩展表达式;
  • -h或–help:显示帮助;
  • -V或–version:显示版本信息。

sed常用命令

  • a\ 在当前行下面插入文本;
  • i\ 在当前行上面插入文本;
  • d 删除,删除选择的行;
  • s 替换指定字符;

sed替换标记

  • g 表示行内全面替换;
  • p 表示打印行;
  • w 表示把行写入一个文件;
  • x 表示互换模板块中的文本和缓冲区中的文本;
  • y 表示把一个字符翻译为另外的字符(但是不用于正则表达式);
  • \1 子串匹配标记;
  • & 已匹配字符串标记;

举例

文本替换 s

# 其中s代表文本命令
sed 's/Canada/Canadian/' table

但是上面一行命令只会替换掉每行第一个匹配字符。

# 在结尾加入g,进行全面替换
sed 's/Canada/Canadian/g' table
# 如果在 g 标记前加入数字,则是从那一数字次匹配开始,进行替换
sed 's/Canada/Canadian/2g' table # 从第二次匹配开始替换

打印匹配行 n

# -n 命令要和 p 标记结合使用
root@***:~/shell/test# sed -n 's/Canada/Canadian/gp' table 
| Canadian                   | CAN  |   Canadian |   34342780 |   34754312 |

删除操作 d

使用d命令可以删除匹配行

# 删除空白行
sed '/^$/d' table
# 删除特定行
sed '3d' table # 删除第三行
# 并且可以加入正则表达式进行匹配
sed '/.*China.*/d' table # 删除带China字段的行

已匹配字符串 &

& 可以代替已匹配的字符

# 在匹配到 Canada 的行左右加上“--[”、“]--”
root@***:~/shell/test# sed -n 's/.*Canada.*/--[&]--/gp' table 
--[| Canada                   | CAN  |   Canada |   34342780 |   34754312 |]--

行范围选定 ,

逗号“,”选择两个匹配词中间的行

# 打印 Cambodia 到 China 中间的行
root@***:~/shell/test# sed -n '/^Cambodia/,/^China/p' table
Cambodia ---------------------------++++++++++++++++++///
| Canada                   | CAN  |   Canada |   34342780 |   34754312 |
| Central African Republic | CAF  |    4349921 |    4436217 |    4525209 |
China ---------------------------++++++++++++++++++///
# 选择 Cambodia 到 China 中间的行,并把行尾替换成???
root@***:~/shell/test# sed -n '/^Cambodia/,/^China/s/$/???/p' table
Cambodia ---------------------------++++++++++++++++++???
| Canada                   | CAN  |   Canada |   34342780 |   34754312 |???
| Central African Republic | CAF  |    4349921 |    4436217 |    4525209 |???
China ---------------------------++++++++++++++++++///???
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值