鱼C论坛

 找回密码
 立即注册
查看: 3238|回复: 1

[学习笔记] 正则表达式--sed工具

[复制链接]
发表于 2017-8-30 21:58:06 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 Zbrel 于 2017-8-30 22:17 编辑

sed工具
sed本身是一个管道命令,可以分析standerd input,还可以将数据进行取代、删除、新增、撷取特定行等。
sed [-nefri] [动作]
-n :使用安静(silent)模式。在一般 sed 的用法中,所有来自standerd input的数据一般都会被列出到屏幕上。但如果加上 -n 参数后,则只有经过sed 特殊处理的那一行(或者动作)才会被列出来。
-e :直接在指令列模式上进行 sed 的动作编辑;
-f :直接将 sed 的动作写在一个档案内, -f filename 则可以执行 filename 内的sed 动作;
-r :sed 的动作支持的是延伸型正则表达式的语法。 (预设是基础正则表示式语法)
-i :直接修改读取的档案内容,而不是由屏幕输出。

动作说明: [n1[,n2]]function
n1, n2 :不见得会存在,一般代表选择进行动作的行数,举例来说,如果动作是需要在 10 到 20 行之间进行的,则10,20[动作行为]
function 有:
a :新增, a 的后面可以接字符串,而这些字符串会在新的一行出现(目前的下一行)
c :取代, c 的后面可以接字符串,这些字符串可以取代 n1,n2 之间的行
d :删除,因为是删除啊,所以 d 后面通常不接任何东西
i :插入, i 的后面可以接字符串,而这些字符串会在新的一行出现(目前的上一行);
p :打印,即将某个选择的数据印出。通常 p 会与参数 sed -n 一起运作
s :取代,可以直接进行取代的工作,通常这个 s 的动作可以搭配正则表达式!例如 1,20s/old/new/g

1.以行为单位的新增/删除功能
① 将 /etc/passwd 的内容列出并且打印行号,同时将第 2~5 行删除:
nl /etc/passwd | sed ‘2,5d’注:sed 后面接的劢作,务必以 '' 两个单引号括住。

② 删除第 3 到最后一行:nl /etc/passwd | sed ‘3,$d’ 钱字号$ 代表最后一行

③ 在第二行后加上abc: nl /etc/passwd | sed ‘2a abc’
        在第二行前加上abc: nl /etc/passwd | sed ‘2i abc’

④ 在第二行后面加入两行字:nl /etc/passwd | sed ‘2a abc\>def’(输入’2a abc\后Enter键,再输入def’)

2.以行为单位的取代与显示功能
① 将第 2-5 行的内容取代为abc:nl /etc/passwd | sed ‘2,5c abc’
② 仅列出 /etc/passwd 档案内的第 5-7 行:nl /etc/passwd | sed -n‘5,7p’

3.部分数据的搜寻并取代的功能
除了整行的处理模式之外, sed 还可以行为单位进行部分数据的搜寻并取代的功能,sed的搜寻并取代与 vi 相当的类似,像这样:sed ‘s/被取代的字符串/新的字符串/g’

4.直接修改档案内容(危险动作)
①        利用 sed 将 1.txt 内每一行结尾若为 . 则换成 ! :sed -i ‘s/\.$/\!/g’ 1.txt
②        利用 sed 直接在 1.txt 最后一行加入# This is a test :
sed -i ‘$a # This is a test’ 1.txt

评分

参与人数 1鱼币 +2 收起 理由
小甲鱼 + 2

查看全部评分

本帖被以下淘专辑推荐:

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2017-10-13 16:49:29 | 显示全部楼层
学习
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-4-25 21:49

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表