linux文本处理 sort,grep,sed,awk笔记
转载http://hi.baidu.com/%C3%CE%C0%EF%CF%E3%B0%CD%C0%AD/blog/item/caf21ba89c54ada1ca130c4a.html
一、sort
Usage: sort [OPTION]... [FILE]...
-o输出文件
-d按字典顺序排序
-n按数据大小输出
-r按逆序输出排序结果
-k指定分类是域上的数字分类
-t 域分隔符,用非空格或tab分隔域sort -k3 -n -r -t: /etc/passwdsort -d /etc/passwd
二、WC
Usage: wc [OPTION]... [FILE]...
-c字符数量~
-l行数~
-w统计单词数量~
wc/etc/passwd
36 65 1739 /etc/passwd #36行,65个单词(空格区分),1739个字符三、diff
diff
Usage:diff[OPTION]...FILES
Comparefileslinebyline.
-q显示有无差异,不显示详细的信息~
-c显示全部内文,并标出不同之处~
-b不检查空格字符的不同~
-B不检查空白行
-r比较子目录中的文件~
diff/etc/passwd./passwd.bak
2d1
< bin:x:1:1:bin:/bin:/sbin/nologin四、grep
Usage:grep[OPTION]...PATTERN[FILE]...
SearchforPATTERNineachFILEorstandardinput.
-c只打印匹配的行编号数
-i匹配文本时忽略大小写
-n在每行前显示其行编号
-v逆向输出,打印不匹配的行
-ffile要匹配的字符在文件列表中
cat/etc/passwd|grep-nroot
1:root:x:0:0:root:/root:/bin/bash
12:operator:x:11:0:operator:/root:/sbin/nologin
#grep'[Tt]his'file.txt
#grep'^[^#]'file.txt
匹配任意字符
grep'r..t'/etc/passwd
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin五、sed
sed
Usage:sed[OPTION]...{script-only-if-no-other-script}[input-file]...
S替代操作
i插入命令
a附加命令
d删除全部匹配行
D 删除首次匹配的行#sed -n '1,4p' /etc/passwd 打印1~4行,-n --quiet以免先打印出passwd的全部内容
#sed'/80/D'file.txt
#sed's/var/usr/g'file.txt替换file.txt中全部var为usr
#sed'50,$s/help/man/g'file.txt从50~最后行替换help为man
sed '/done/d' xj_user_p.log 删除done六、awk
Usage: awk [POSIX or GNU style options] -f progfile [--] file ...
Usage:awk[POSIXorGNUstyleoptions][--]'program'file...
gawk'{sum+=$1};END{printsum}'file
gawk-F:'{print$1}'/etc/passwd
NF 当前记录中的字段数。NR 当前记录数。awk-F:'{printNR,$1,$NF}'./passwd.bak
awk-F:'NR%10==5{printNR,$0}'./passwd.bak打印出5,15,25...行
5sync:x:5:0:sync:/sbin:/bin/sync
15nobody:x:99:99:Nobody:/:/sbin/nologin
25 apache:x:48:48:Apache:/var/www:/sbin/nologin综合示例:
...
数据处理:
找出上海股票涨幅最大的股票?
sort-n-r-k4t.txt|sed-n'1p'
涨幅>3的股票?
awk'{if($1>3)print$0}'t.txt
涨幅在在4~15之间的股票
awk'{if($4>0&&$4<15){print$0}}'t.txt