转载2015-09-14 18:04:30
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 -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笔记
使用匹配正则表达式“~”
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列的所有行
awk -F: '{if($3==10||$4==10) print $0}' /etc/passwd
打印出第3列和第4列为10的行
awk -F: '/root/ {print NR}' /etc/passwd
打印出包含root这一行的行号
awk -F: '/root/ {print NF}' /etc/passwd
打印出包含root这一行的列数
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个排序好的文件合并在一起
uniq 去掉重复的行(必须是连续出现的行,中间不能夹杂任何其它文本行)而sort -u 去掉所有重复的行
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个域