声明:本文总结自互联网,欢迎补充或占为己有
普通文本:
cat、 tac、 more、 less、 head、 tail、 nl、 grep 、 rev、 fold、acat、 pr
含有不可见字符的文本:
hexdump、 od、 xxd
dos2unix、unix2dos、 unix2mac
encguess、enca、iconv、enconv 、base64
wc
#wc命令说明:
统计文本文件中有多少字,多少行,多少字符。
#格式:
wc [-lwm]
#参数说明:
-l : 仅显示行数;
-w : 仅显示字数(英文单词个数);
-m : 字符数;
sort、tsort、uniq
#sort命令说明:
将文本文件的内容按行排序。
#格式:
sort [-fbMnrtuk] [file or stdin]
# 参数说明:
-f : 忽略大小写;
-b : 忽略最前面的空格;
-u : 即uniq,重复行仅出现一次;
-M : 以月份的名字来排序;
-n : 使用“纯数字”来排序;
-r : 反向排序;
-t : 分隔符,默认为tab键;
-k : 按指定字段排序;
#对文件/etc/passwd以第三栏排序
cat /etc/passwd | sort -t ':' -k 3
#uniq命令说明:
如果排序完成了,将重复的行仅显示一次。注意,若文件未排序,该命令失效。
#格式:
uniq [-ic]
#参数说明:
-i : 忽略大小写;
-c : 统计每行重复的次数;
cmp、comm、 diff、patch
#diff命令说明:
以“行”为单位进行文件比较,一般用在ASCII纯文本文件。
#格式:
diff [-bBi] file1 file2
#参数:
-b : 忽略一行中有多个空白的差异;
-B : 忽略空白行的不同;
-i : 忽略大小写;
#diff命令说明:
以“行”为单位进行文件比较,一般用在ASCII纯文本文件。
#格式:
diff [-bBi] file1 file2
#参数:
-b : 忽略一行中有多个空白的差异;
-B : 忽略空白行的不同;
-i : 忽略大小写;
#cmp命令说明:
以“位”为单位进行文件比较,可以比较二进制文件。
#格式:
cmp [-s] file1 file2
#参数:
-s : 将所有不同点的位都列出来,默认仅输出第一个发现的不同点;
#patch命令说明 :
diff old new > patch_file命令可以找出new文件与old文件不同的地方,然后用patch命令给old文件打上补丁,即与new文件相同了。
#格式:
patch -pN < patch_file
#参数:
-pN表示取消N层目录。
grep, egrep, fgrep, ag
#grep命令说明:
按行处理,输出文件中包含搜索字符串的所有行。
格式:
grep [-acinv] ‘搜索字符串’ filename
参数说明:
-a:在二进制文件中,以文本文件的方式搜索数据;
-c:计算找到“搜索字符串”的次数;
-i:忽略大小写;
-n:输出行号;
-v:反向选择;
-E:扩展正则表达式
#在文件a.txt中搜索包含字符串good或glad的行
grep -E 'g(oo|la)d' a.txt
md5sum, rsa, ssl, gpg
split、cut、join、paste、csplit
#split命令说明:
将一个大文件拆分为几个小文件。
#格式:
split [-bl] fle
#参数说明:
-b : 拆分的文件大小,可加单位,如b, k, m等;
-l : 按行数进行拆分;
#将文件bigfile按512K拆分,拆分后的文件依次为:smallfileaa、smallfileab
split -b 512k bigfile smallfile
#将文件bigfile中的每10行拆分成一个小文件
split -l 10 bigfile smallfile
#cut命令说明:
按行处理,将一行消息的某段切出来。
#格式:
cut -d '分割字符' -f fields
cut -c m-n
#取出环境变量PATH中的第3个和第5个路径
echo $PATH | cut -d ':' -f 3,5
#取出环境变量PATH中的第3个到第5个路径
echo $PATH | cut -d ':' -f 3-5
#将export中的每行的前面11个字符删除留,保留从第12个字符开始的所有字符 export | cut -c 12-
#join命令说明:
处理两个文件中有相同数据的行,将它们加在一起。
#格式:
join [-ti12] file1 file2
#参数说明:
-i : 忽略大小写;
-t : 分隔符,默认为空格符;
-1 m : 指定file1用来比较的字段m,默认值为1;
-2 n : 指定file2用来比较的字段n,默认值为1;
#paste命令说明:
比较两个文件的数据关联性,直接将“两行贴在一起”,中间以tab键隔开。
#格式:
paste [-d] file1 file2
#参数说明:
-d:后面接分隔符,默认为tab键。
tr、expand、unexpand
#tr命令说明:
单个字符的处理工具,可以用于删除字符、替换字符等基本功能。
#格式:
tr [-ds] SET
#参数说明:
-d:删除,例如:cat file | tr -d '\r',相当于dos2unix命令所起的作用。
-s:替换字符,例如:cat file | tr -s [0-9],如果某个数字连续出现,仅保留第一个。
#将file中的小写字符全部改为大写
cat file | tr [a-z] [A-Z]
#expand命令说明:
将tab键转换成空格键。
#格式:
expand [-t] file
#参数说明:
-t n : 后面可以接一个数字n,一个tab键替换为n个空格键,默认值为8。
fmt, col, column
#col命令说明:
格式化显示列。
#格式:
col [-x]
#参数说明:
-x:将tab键转换成对等的空格键;
#使用cat -A,tab键会以^I显示,经过col -x处理,tab替换为空格
cat -A /etc/man.config | col -x | cat -A
awk
#awk命令说明:
将一行消息分成数个段,对每行进程分别处理
#格式:
awk '条件 {命令}' file
#awk的内置变量:
$n:该行的第n个字段;
NF:每一行拥有的字段总数;
NR:当前行的行号;
FS:分隔符,默认为空格键;
#打印passwd文件第三栏小于10的行的第1、3栏
cat /etc/passwd | awk 'BEGIN {FS=":"} $S3<10 {print $1 "\t" $3}'
eamcs, vim, sed
#sed命令说明:
分析STDIN的数据,将数据处理后,输出到STDOUT。
#格式:sed [-nefr] 动作
#参数说明:
-n: 安静模式,仅显示经过sed特殊处理的行;
-e: 直接在命令行模式进行sed的操作编辑;
-r: 支持扩展正则表达式语法
-f file: 将sed操作写在一个文件中;
#动作说明:
n1和n2代表选择进行操作的行数
function来源于ed编辑器;
#在/etc/passwd第2行下面新增一行,写入"Hello World"
nl /etc/passwd | sed '2a Hello World'
#在/etc/passwd第2行上面新增一行,写入"Hello World"
nl /etc/passwd | sed '2i Hello World'
#删除/etc/passwd中的第2至5行
nl /etc/passwd | sed '2,5d'
#仅显示2到5行,注意,如果不加-n,2到5行将重复输出
nl -n /etc/passwd | sed '2,5p'
#将第1~20行中出现的所有字符串old替换为new
nl /etc/passwd | sed '1,20s/old/new/g'
tee
#tee命令说明:
双向重导向,从标准输入读取数据,输出到屏幕上,同时保存成文件。
#格式:
tee [-a] file
#参数说明:
-a:以累加的方式,将数据加入到file中。
#将ls命令的数据存一份到myfile中,同时屏幕也有输出数据
ls -al /home | tee ~/myfile | more