您的位置:首页 > 运维架构 > Linux

Linux sed command

2015-05-10 09:44 155 查看
Source:

1. linux的sed命令详解

2.Linux基础 ——- 文本处理利器sed

Basic

sed [-option] ‘command’ filename

常用选项

-n: 使用安静模式。 一般sed的用法上, 所有来自stdin的资料一般都会列在荧幕上,加上-n, 只会显示经过sed 处理的那一行

-e: 直接在指令列模式上进行 sed 的动作模式

-f: 执行包含 sed 命令的文本

-r: 支持延伸性正规表达式

-i: 直接修改读取的档案内容,不是荧幕输出

常用命令:

a: 新增 , a 后可以接字符串,而这些字串会出现在新的一行

c: 取代, c 的后面接字串,这些字串可以取代n1,n2 之间的行

d: 删除

i: 插入:i 的后面接字串,会出现在新的上一行

p: 列印, 输出

s: 取代, 可以直接进行取代的工作

Example

if we have a.txt

$ cat a.txt

1a 1b 1c

2a 2b 2c

3a 3b 3c

删除某行

sed ‘1d’ a.txt

2a 2b 2c

3a 3b 3c

输出会显示没有第一行的结果,但 a.txt 并没有改变

如果使用 -n, 则不会输出这些。

sed ‘$d’ a.txt 删除最后一行,$ 是最后一行

sed ‘1,2d’ a.txt 删除第1到2行

显示某行

sed -n ‘1p’ a.txt 显示第一行

sed -n ‘/python/p’ a.txt 显示有 python 的行

增加行

sed ‘1a abcd’ a.txt

1a 1b 1c

abcd

2a 2b 2c

3a 3b 3c


sed ‘1,3a abcd\nefgh’ a.txt 第1和3行后加了两行abcd,efgh。 \n换行

替换行

sed ‘1c abcd’ a.txt

abcd

2a 2b 2c

3a 3b 3c


sed ‘1,2c Hi’ a.txt 第1和2行都替代成 Hi

替换某部分

sed ‘s/abc/edf/g’ 替换 abc 为 edf

sed中的元字符(使用于正则表达式)

^ : 行开头

$ : 行结束

. : 任意非换行字符

* : 零个或多个字符 如/.*/

[] : 匹配一个指定范围内的字符,如/[Ss]ed/匹配sed和Sed。

[^] : 不匹配指定范围的字符,与[]相反

.. : 捕获组

& : 保存搜索字符用来替换其他字符,如s/love/&/,love这成love

\<( \>) : 锚定单词的开始

x{m} : 重复字符x,m次,如:/0{5}/匹配包含5个o的行。

x{m,} : 重复字符x,至少m次,如:/o{5,}/匹配至少有5个o的行。

x{m,n}: 重复字符x,至少m次,不多于n次,如:/o{5,10}/匹配5–10个o的行。

Other Example

sed ‘/ab/a\xxx’ a.txt

将 a.txt 中含有ab的行下面插入一行字符串 xxx

sed ‘/ab/cAB=AB’ a.txt

将a.txt中含有ab的行整行替换成AB=AB

sed ‘/^abc/{=}’ a.txt

=: 为显示行号。 以abc开头的关键词所在的行号
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: