tr
作用:可搭配集对应字符对字符的转换和删除
集对应字符
[:alnum:]:字母和数字
[:alpha:]:字母
[:cntrl:]:控制(非打印)字符
[:digit:]:数字
[:graph:]:图形字符
[:lower:]:小写字母
[:print:]:可打印字符
[:punct:]:标点符号
[:space:]:空白字符
[:upper:]:大写字母
[:xdigit:]:十六进制字符
#语法: tr [OPTION]... SET1 [SET2] #选项 -c或——complerment:取字符集的补集 -d或——delete:删除所有属于第一字符集的字符 -s或—squeeze-repeats:把连续重复的字符以单独一个字符表示 -t或--truncate-set1:将第一个字符集对应字符转化为第二字符 #例子 #1.将输出大写字母替换成小写 [[email protected] ~]# echo "LIAOXZ"|tr -t "[[:upper:]]" "[[:lower:]]" liaoxz #2.删除文件中的空格 [[email protected] ~]# cat /etc/issue \S Kernel \r on an \m [[email protected] ~]# cat /etc/issue|tr -d " " \S Kernel\ronan\m #3.将/root/下文件列表,显示成一行,并文件名之间用空格隔开 [[email protected] ~]# ls /root/ |tr "[[:space:]]" " " 1 1.sh 1.txt 2.sh anaconda-ks.cfg bin dead.letter Desktop Documents Downloads install.log install.log.syslog liaoxz ll LL mbr Music Pictures ping.sh Public Templates Videos #4.处理字符串“xt.,l 1 jr#!$mn2 c*/fe3 uz4”,只保留其中的数字和空格 [[email protected] ~]# echo "xt.,l 1 jr#" "mn2 c*/fe3 uz4"|tr -d "[[:alpha:]]"|tr -d "[[:punct:]]" 1 2 3 4 #5.删除文件1中的所有重复字母 [[email protected] ~]# cat 1 wwwwwsss wwdsss aaaasddqqaxs [[email protected] ~]# cat 1|tr -s w wsss wdsss aaaasddqqaxs [[email protected] ~]# cat 1|tr -s ws ws wds aaaasddqqaxs [[email protected] ~]# cat 1|tr -s wsa ws wds asddqqaxs [[email protected] ~]# cat 1|tr -s wsad ws wds asdqqaxs [[email protected] ~]# cat 1|tr -s wsadq ws wds asdqaxs #6.处理字符串“xt.,l 1 jr#!$mn2 c*/fe3 uz4”,只保留其中的数字 [[email protected] ~]# echo "xt.,l 1 jr#$tttmn2 c*/fe3 uz4"|tr -d -c "[[:digit:]]\n" 134
》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》
[head|tail]
文件截取小工具
head 显示文本前几行 在默认情况下,head命令显示文件的头10行内容。
#语法 head [OPTION]... [FILE]... #选项 -n<数字>:指定显示头部内容的行数; -c<字符数>:指定显示头部内容的字符数; -v:总是显示文件名的头信息; -q:不显示文件名的头信息。 #例子 1.显示/etc/passwd文件前5行 [[email protected] ~]# head -5 /etc/passwd root:x:0:0:root:/root:/bin/bash bin:x:1:1:bin:/bin:/sbin/nologin daemon:x:2:2:daemon:/sbin:/sbin/nologin adm:x:3:4:adm:/var/adm:/sbin/nologin lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin 2.显示文件/etc/passwd头行第一个字符 [[email protected] ~]# head -c1 /etc/passwd r
tail 显示文本后几行 不加选项默认为10行
#语法 tail [OPTION]... [FILE]... #选项 --retry:即是在tail命令启动时,文件不可访问或者文件稍后变得不可访问,都始终尝试打开文件。 使用此选项时需要与选项“——follow=name”连用; -c或——bytes=:输出文件尾部的N(N为整数)个字节内容; -f或;--follow:显示文件最新追加的内容。“name”表示以文件名的方式监视文件的变化。“-f”与 “-fdescriptor”等效; -F:与选项“-follow=name”和“--retry"连用时功能相同; -n或——line=:输出文件的尾部N(N位数字)行内容。 --pid=<进程号>:与“-f”选项连用,当指定 的进程号的进程终止后,自动退出tail命令; -q或——quiet或——silent:当有多个文件参数时,不输出各个文件名; -s<秒数>或——sleep-interal=<秒数>:与“-f”选项连用,指定监视文件变化时间隔的秒数; -v或——verbose:当有多个文件参数时,总是输出各个文件名; --help:显示指令的帮助信息; --version:显示指令的版本信息。 #例子 1.显示文件/etc/passwd最后3行内容 [[email protected] ~]# tail -3 /etc/passwd userlist.file:x:1003:1003::/home/userlist.file:/bin/bash lll:x:1004:1004::/home/lll:/bin/bash apache:x:48:48:Apache:/usr/share/httpd:/sbin/nologin 2.监控文件1的写入情况 #如下图
》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》
cut
可以对文件按列抽取需要的内容
#语法 cut OPTION... [FILE]... #选项 -b:仅显示行中指定直接范围的内容; -c:仅显示行中指定范围的字符; -d:指定字段的分隔符,默认的字段分隔符为“TAB”; -f:显示指定字段的内容; -n:与“-b”选项连用,不分割多字节字符; --complement:补足被选择的字节、字符或字段; --out-delimiter=<字段分隔符>:指定输出内容是的字段分割符; #例子 1.显示root用户名和登录shell [[email protected] ~]# cut -d: -f1,7 /etc/passwd|grep root root:/bin/bash #grep用法参考博客: #2.查看/etc/issue每一列第一个字符 [[email protected] etc]# cat /etc/issue \S Kernel \r on an \m [[email protected] etc]# cat /etc/issue|cut -c 1 K
》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》
wc
收集文本统计信息,可以计算文件的Byte数、字数或是列数等。
#语法 wc [OPTION]... [FILE]... wc [OPTION]... --files0-from=F 选项 -c或--bytes或——chars:只显示Bytes数; -l或——lines:只显示列数; -w或——words:只显示单词字数; -m或--chars :只显示字符总数。 #例子 显示文件/etc/issue列数和单词字数 [[email protected] etc]# cat /etc/issue|wc -w 6 #单词数 [[email protected] etc]# cat /etc/issue|wc -l 3 #列数
》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》
sort
文件排序工具,只输出不改变文件内容
#语法 sort [OPTION]... [FILE]... -b:忽略每行前面开始出的空格字符; -c:检查文件是否已经按照顺序排序; -d:排序时,处理英文字母、数字及空格字符外,忽略其他的字符; -f:排序时,将小写字母视为大写字母; -i:排序时,除了040至176之间的ASCII字符外,忽略其他的字符; -m:将几个排序号的文件进行合并; -M:将前面3个字母依照月份的缩写进行排序; -k X 选项按照使用c字符分隔的X列来整理能够使用多次可以与-t搭配来用; -n:依照数值的大小排序; -o<输出文件>:将排序后的结果存入制定的文件; -r:以相反的顺序来排序; -t<分隔字符>:指定排序时所用的栏位分隔字符; +<起始栏位>-<结束栏位>:以指定的栏位来排序,范围由起始栏位到结束栏位的前一栏位。 #例子 #1.查出用户UID最大值的用户名、UID及shell类型 [[email protected] etc]# cat passwd |sort -s -n -t: -k3 |tail -1|cut -d: -f1,3,7 nfsnobody:65534:/sbin/nologin #2.查出用户UID最小值的用户名、UID及shell类型 [[email protected] etc]# cat passwd |sort -s -n -t: -k3 |head -1|cut -d: -f1,3,7 root:0:/bin/bash #3.截取出/tmp/目录下所有文件的权限,删除文件类型和文件权限一样项 [[email protected] etc]# ll /tmp|cut -d. -f1|sort drwx------ drwx------ drwx------ drwx------ drwx------ drwx------ drwx------ drwx------ drwx------ drwx------ drwx------ drwx------ drwx------ drwx------ drwx------ drwx------ drwxr-xr-x drwxr-xr-x prw------- -rw------- -rw-r--r-- total 72 [[email protected] etc]# ll /tmp|cut -d. -f1|sort -u drwx------ drwxr-xr-x prw------- -rw------- -rw-r--r-- total 72
》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》
uniq
报告或忽略文件中的重复行,一般与sort命令结合使用。
#语法 uniq [OPTION]... [INPUT [OUTPUT]] #选项 -c: 显示每行重复出现的次数 -d: 仅显示重复过的行 -u: 仅显示不曾重复的行 #ps:连续且完全相同方为重复 #例子 #显示当前每个远程连接主机ip数 [[email protected] ~]# who |tr -s " "|cut -d " " -f5|sed "/^$/d"|sed "/(:0)/d"|uniq -c 4 (10.1.250.31) 2 (10.1.252.216)
》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》
diff
是以逐行的方式,比较文本文件的异同处。如果该命令指定进行目录的比较,则将会比较该目录中具有相同文件名的文件,而不会对其子目录文件进行任何比较操作
#语法 diff [OPTION]... FILES #选项 -<行数>:指定要显示多少行的文本。此参数必须与-c或-u参数一并使用; -a或——text:diff预设只会逐行比较文本文件; -b或--ignore-space-change:不检查空格字符的不同; -B或--ignore-blank-lines:不检查空白行; -c:显示全部内容,并标出不同之处; -C<行数>或--context<行数>:与执行“-c-<行数>”指令相同; -d或——minimal:使用不同的演算法,以小的单位来做比较; -D<巨集名称>或ifdef<巨集名称>:此参数的输出格式可用于前置处理器巨集; -e或——ed:此参数的输出格式可用于ed的script文件; -f或-forward-ed:输出的格式类似ed的script文件,但按照原来文件的顺序来显示不同处; -H或--speed-large-files:比较大文件时,可加快速度; -l<字符或字符串>或--ignore-matching-lines<字符或字符串>:若两个文件在某几行有所不同,而之际 航同时都包含了选项中指定的字符或字符串,则不显示这两个文件的差异; -i或--ignore-case:不检查大小写的不同; -l或——paginate:将结果交由pr程序来分页; -n或——rcs:将比较结果以RCS的格式来显示; -N或--new-file:在比较目录时,若文件A仅出现在某个目录中,预设会显示:Only in目录,文件A 若 使用-N参数,则diff会将文件A 与一个空白的文件比较; -p:若比较的文件为C语言的程序码文件时,显示差异所在的函数名称; -P或--unidirectional-new-file:与-N类似,但只有当第二个目录包含了第一个目录所没有的文件时, 才会将这个文件与空白的文件做比较; -q或--brief:仅显示有无差异,不显示详细的信息; -r或——recursive:比较子目录中的文件; -s或--report-identical-files:若没有发现任何差异,仍然显示信息; -S<文件>或--starting-file<文件>:在比较目录时,从指定的文件开始比较; -t或--expand-tabs:在输出时,将tab字符展开; -T或--initial-tab:在每行前面加上tab字符以便对齐; -u,-U<列数>或--unified=<列数>:以合并的方式来显示文件内容的不同; -v或——version:显示版本信息; -w或--ignore-all-space:忽略全部的空格字符; -W<宽度>或--width<宽度>:在使用-y参数时,指定栏宽; -x<文件名或目录>或--exclude<文件名或目录>:不比较选项中所指定的文件或目录; #例子 #比较httpd.conf文件和httpdbak.conf的 不同 [[email protected] conf]# diff httpd.conf httpdbak.conf 41c41 < Listen 8080 --- > Listen 80
ps:本文许多命令选项来自于:http://man.linuxde.net/