Sed  笔记

转载2015-09-14 18:04:30

sed笔记_sed笔记

sed笔记_sed笔记_02

sed笔记_sed笔记_03

1、sed命令的-n选项

sed -n ‘1p’ /etc/passwd   打印文件第一行

sed -n ‘1,6p’ /etc/passwd 打印文件1到6行

sed -n -e 1p -e 6p /etc/passwd 打印文件第1行和第6行

sed -n ‘/root/p’ /etc/passwd 打印匹配root的这一行

sed -n '/root/=' /etc/passwd 打印匹配root这一行的行号

2、sed 命令的-e选项

  只有向sed命令传递多个编辑命令时,-e选项才有用武之地

   sed -n -e '/root/p' -e '/root/=' /etc/passwd 既打印内容又打印行号

 如果sed命令匹配的字符中包含元字符,需要使用转义符“\” 屏蔽其特殊意思

  !号表示取反x,y!表示匹配不在x和y行号范围内的行

  X!表示除了x行外所有的行

  sed -n '2,10!p' /etc/passwd 打印不在2,10行范围内的行

  /root/,x表示打印与root匹配的行到最后一行

  X,/root/ 表示打印x行到与root的匹配行

  sed -n '3,/root/p' /etc/passwd

3、sed命令-d选项

  用来删除匹配的行或者匹配的项

  sed -i '/root/d' /etc/passwd

  sed -i -e 1d -e 5d /etc/passwd

sed笔记_sed笔记_04


sed -n 's/root/dgf/p' /etc/passwd 这样只替换了第一个root

sed -n 's/root/dgf/pg' /etc/passwd  全部将root替换为dgf

sed -n 's/root/dgf/2p' /etc/passwd 将第二次出现的root替换为dgf

sed -n 's/root/dgf/w /home/stargame/1.txt' /etc/passwd

将修改过的内容另存到另一个文件

Sed 中的&可以用来调用被替换的字符串

sed -n 's/root/(&)/pg' /etc/passwd 等价于下边那条命令

sed -n 's/root/(root)/pg' /etc/passwd

Sed ‘/root/r dgf.txt’ /etc/passwd 在匹配行的后面加入文本内容

Sed 变换命令-y 选项

Sed -n ‘y/1234/abcd/’ /etc/passwd

 

Sed {}符号的用法

sed -n  -e '/root/p' -e '/root/=' /etc/passwd 等价于

sed -n '/root/{p;=}' /etc/passwd

 

 AWK笔记


sed笔记_sed笔记_05

使用匹配正则表达式“~”

awk -F: '$1~/root/' /etc/passwd

匹配第一列是root的这一行

awk -F: '$0~/nologin/' /etc/passwd

匹配有nologin的所有行

awk -F: '$0!~/nologin/' /etc/passwd

匹配没有nologin的所有行

在AWK里边使用if语句

awk -F: '{if($3<$4) print $0}' /etc/passwd

打印第3列小于第4列的所有行

sed笔记_sed笔记_06

awk -F: '{if($3==10||$4==10) print $0}' /etc/passwd

打印出第3列和第4列为10的行

sed笔记_sed笔记_07

awk -F: '/root/ {print NR}' /etc/passwd

打印出包含root这一行的行号

awk -F: '/root/ {print NF}' /etc/passwd

打印出包含root这一行的列数

sed笔记_sed笔记_08

sort -t: /etc/passwd  -t 后边是分隔符(默认是对第一个域排序)

Sort -t: -k3 /etc/passwd    -k指定对第几个域进行排序

sort -k2n 1.txt  对第2个域的数字大小排序(数字默认从小到大)

Sort -k2nr 1.txt 对第2个域的数字从大到小排序

Sort -t: -u /etc/passwd 去掉重复的

 

-o选项(默认把排序的内容输出到屏幕上,通过-o选项可以把内容保存到另一个文件中)

Sort -t: -k3 -o dgf.txt /etc/passwd

-m 选项用于将2个排序好的文件合并在一起

sed笔记_sed笔记_09

uniq 去掉重复的行(必须是连续出现的行,中间不能夹杂任何其它文本行)而sort -u 去掉所有重复的行

sed笔记_sed笔记_10

Cut -c1 /etc/passwd 提取第一个字符

Cut -c1-5 /etc/passwd 提取1到第5个字符

Cut -c1,5 /etc/passwd 提取第1个和第5个字符

Cut -d: -f1-5 /etc/passwd 以:为分隔符提取1到第5个域