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: 取代, 可以直接进行取代的工作
$ cat a.txt
1a 1b 1c
2a 2b 2c
3a 3b 3c
2a 2b 2c
3a 3b 3c
输出会显示没有第一行的结果,但 a.txt 并没有改变
如果使用 -n, 则不会输出这些。
sed ‘$d’ a.txt 删除最后一行,$ 是最后一行
sed ‘1,2d’ a.txt 删除第1到2行
sed -n ‘/python/p’ a.txt 显示有 python 的行
1a 1b 1c
abcd
2a 2b 2c
3a 3b 3c
sed ‘1,3a abcd\nefgh’ a.txt 第1和3行后加了两行abcd,efgh。 \n换行
abcd
2a 2b 2c
3a 3b 3c
sed ‘1,2c Hi’ a.txt 第1和2行都替代成 Hi
$ : 行结束
. : 任意非换行字符
* : 零个或多个字符 如/.*/
[] : 匹配一个指定范围内的字符,如/[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的行。
将 a.txt 中含有ab的行下面插入一行字符串 xxx
sed ‘/ab/cAB=AB’ a.txt
将a.txt中含有ab的行整行替换成AB=AB
sed ‘/^abc/{=}’ a.txt
=: 为显示行号。 以abc开头的关键词所在的行号
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.txt2a 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.txt1a 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.txtabcd
2a 2b 2c
3a 3b 3c
sed ‘1,2c Hi’ a.txt 第1和2行都替代成 Hi
替换某部分
sed ‘s/abc/edf/g’ 替换 abc 为 edfsed中的元字符(使用于正则表达式)
^ : 行开头$ : 行结束
. : 任意非换行字符
* : 零个或多个字符 如/.*/
[] : 匹配一个指定范围内的字符,如/[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开头的关键词所在的行号
相关文章推荐
- Learn sed using these command on Linux(流线式编辑器——sed)
- Linux Command -- sed
- linux sed command record
- linux_command_sed
- learn Linux sed command
- Linux command - sed and xargs
- Linux / Unix Command: sed命令
- sed command failing on Mac, but works on Linux [stackoverflow]
- Linux Command Line and....ch19(sed编辑器)
- Linux替换变量中包含空格 sed: -e expression #1, char 6: unterminated `s' command
- linux:sed和awk
- Linux command line install Oracle Java
- linux下sed命令对文件执行文本替换
- 关于arm-linux-gcc切换到root用户找不到命令的解决办法(command not found)
- 简述linux中sed命令
- Linux 中的 sed 命令详解
- Linux管理-sed
- Linux awk命令详解 sed
- error: command 'x86_64-linux-gnu-gcc' failed with exit status 1
- Linux 修改.bash_profile后 造成命令无法使用bash: command not found