前篇回顾
sed - 简介 读取编辑文字档的好工具
sed - 2 Pattern
今天来聊一下sed的编辑功能, 毕竟sed是Stream Editor;
主要command功能就还是新增, 删除, 修改, 输出
新增, 大概能想的到
删除
修改
先聊删除功能, 因为就一个delete
但s
也能作到类似删除的功能, 之後再说
重要
首先拿/etc/passwd
来玩, 但是我们玩备份的这档案, 别玩etc底下的, 玩完系统就崩溃了
# 复制passwd 到当前目录
cp /etc/passwd ./
# 指定第1行做删除
nl passwd | sed '1d'
> 2 daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
> 3 bin:x:2:2:bin:/bin:/usr/sbin/nologin
但再看一次passwd内容, 原本的第一行root还是在
nl passwd
> 1 root:x:0:0:root:/root:/bin/bash
> 2 daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin****
复习一下sed预设不改变原始文件, 只改变pattern space的内容
这里要直接改变原文件要加上-i
(edit file in place)
sed -i '1d' passwd
前一篇介绍的一些行定位方法, 这里都能用
也能搭配字串匹配的方式做操作.
准备资料
cat > os.txt <<EOF
> Windows
> Linux
> Android
> OS
> EOF
nl os.txt | sed '/OS/d'
> 1 Windows
> 2 Linux
> 3 Android
^$
, ^表示begin of a line, $表示end of the linecat > os.txt <<EOF
> Windows OS os!
> Linux Os os
>
> Android
>
> OS
> EOF
sed '/^$/d' os.txt
> Windows OS OS!
> Linux OS OS!
> Android
> OS
nl os.txt | sed '/Linux/,+2d'
> 1 Windows
cat > os.txt <<EOF
> Windows OS os!
> Linux Os os
> Android
> OS
> EOF
直觉想法, 把一行内匹配到第二次的给换成指定字串;
然後在一次sed, 把匹配到指定字串的给删除
2
则表示匹配到的第二个
sed 's/OS/del/2' os.txt | sed '/del/d'
Android
OS
Windows OS os
这里2个OS之间是个tab# os.txt
> Windows OS os
> Linux Os os
> Android
> OS
> EOF
cat -T os.txt
# 可以看到^I就是了tab
> Windows OS^Ios
> Linux Os os
> Android
> OS
想法是把行内有不满足可以[:print:]
的都删除, 跟上面案例的^
有所不同
这里的是用到Regex的[^...]
, 在中括号内, 表示匹配指定字元之外的任何内容
[^[:print:]]
sed '/[^[:print:]]/d' os.txt
> Linux Os os
> Android
> OS
----参考来源
Negated Character Classes
<<: [Day11] Storybook - Controls
前言 做到现在会发现每个ViewController内的程序码都一大堆,有画面元件,有逻辑,有Mod...
因为疫情的关系 体会到很多事情都要持之以恒 在突然被打乱的生活节奏中 要怎麽找回另一个习惯的步调 ...
为了网页服务的安全性,我们需要将提供的HTTP协定页面,透过 SSL/TLS加密,升级成HTTPs。...
六个思考帽是着名学者爱德华·德·波诺(Edward de Bono)提出的思考工具,代表了六个不同的...
昨天我们打完指令,Welcome的资料夹神奇的出现後,你应该会有个冲动想要把他打开来一看究竟吧! 那...