一、cat主要有三大功能:

1.一次显示整个文件。$ cat filename
2.从键盘创建一个文件。$ cat > filename (只能创建新文件,不能编辑已有文件)
3.将几个文件合并为一个文件: $cat file1 file2 > file

参数:
-n 或 --number 由 1 开始对所有输出的行数编号
-b 或 --number-nonblank 和 -n 相似,只不过对于空白行不编号
-s 或 --squeeze-blank 当遇到有连续两行以上的空白行,就代换为一行的空白行
-v 或 --show-nonprinting


二、echo [-n](-n 不换行)

   \a 发出警告声;
   \b 删除前一个字符;
   \c 最后不加上换行符号;
   \f 换行但光标仍旧停留在原来的位置;
   \n 换行且光标移至行首;
   \r 光标移至行首,但不换行;
   \t 插入tab;
   \v 与\f相同;
   \\ 插入\字符;
   \nnn 插入nnn(八进制)所代表的ASCII字符;
–help 显示帮助
–version 显示版本信息


三、tr:用来从标准输入中通过替换或删除操作进行字符转换。tr主要用于删除文件中控制字符或进行字符转换。使用tr时要转换两个字符串:字符串1用于查询,字符串2用于处理各种转换。tr刚执行时,字符串1中的字符被映射到字符串2中的字符,然后转换操作开始。


cat /etc/passwd | tr 'a-z' 'A-Z' :将passwd文件小写转大写

cat /etc/passwd | tr 'abc'  'cba' :将abc转化为cba

cat /etc/passwd | tr '0-9'  'a-z'  :将数字0-9转化为a-z(顺序)

cat /etc/passwd | tr -d '\n' :将换行符删除

cat /etc/passwd | tr -s 'a-z' :将中间重复数字删除

cat /etc/passwd | tr -d '' :将中间空格删掉


四、cut是一个选取命令,就是将一段数据经过分析,取出我们想要的.

-b :以字节为单位进行分割。这些字节位置将忽略多字节字符边界,除非也指定了 -n 标志。
-c :以字符为单位进行分割。
-d :自定义分隔符,默认为制表符。
-f :与-d一起使用,指定显示哪个区域。
-n :取消分割多字节字符。仅和 -b 标志一起使用。如果字符的最后一个字节落在由 -b 标志的 List 参数指示的<br />范围之内,该字符将被写出;否则,该字符将被排除。


cat /etc/passwd | cut -b 1,2,3,4 :取passwd文件前四个字节输出

cat -b xx 2 :列出第二个字节

cat -c xx 2 :列出第二个字符(中文)

cat -nb xx 2 :不拆开字符串的第二个字符串

cat -nc xx 2 :不拆开字符的第二个


五、sort是在Linux里非常常用的一个命令,管排序。

sort -u xx :删除重复后排序

sort xx | uniq :跟sort -u一样

sort /etc/passwd :从首字符向后,依次按ASCII码值进行比较,最后将他们按升序输出

sort -r xx :降序排列

sort xx -o xx :将排序后输入到原文件,避免重复

sort -n xx :按照数值排序

sort -n -k 2 -t : xx :指定间隔符为:,根据第二列开始排


六、tee实现一个输入两个输出。

    -a或--append  附加到既有文件的后面,而非覆盖它.
   -i-i或--ignore-interrupts  忽略中断信号

cat xx | tee xx1 :将xx输出写入到xx1

cat xx | tee -a xx1 :将xx输出附到xx1后面


七、grep文本过滤命令。

grep 'cpu' /proc/cpuinfo  :到cpuinfo文件中过滤有cpu字符信息

grpe -v 'cpu' /proc/cpuinfo :反向匹配未含cpu字符的行

ifconfig | grep 'inet addr' | cut -d : -f2 :取ifconfig过滤信息第二个字段

grep --color=auto 'cpu' /proc/cpuinfo :将匹配到的字符加粗

grep '^root' /etc/passwd :匹配root开头的行

grep 'root$' xx :匹配以root结尾的行

grep -i 'root' xx :不区分大小写匹配root行

grep -c 'bin' /etc/passwd = grep 'bin' /etc/passwd | wc -l :统计匹配行数

grep -n 'root' /etc/passwd :列出匹配的行及行号

grep '[123].' /etc/passwd :匹配1,2,3开头且是两个数字的行

grep '^[^58]' xx :匹配开头不是58的行

grep 'r.t' /etc/passwd :匹配r与t之间有一个字符的行

grep 'r*t' /etc/passwd :匹配r与t之间任意个字符的行

grep 'r.*t' /etc/passwd :匹配r与t之间

grep -n 'o\{2\}' xx :匹配有重复o的行

grep -n 'o\{2,\}' xx :匹配有重复o两个及以上的行

grep -n 'o\{2,5\}' xx :匹配o在2-5个之间的行


八、sed主要用来自动编辑一个或多个文件;简化对文件的反复操作;编写转换程序等。

sed '2d' xx :删除xx文件第二行输出

sed '2,$d' xx :删除xx文件第二行至行尾

sed '/apple/'d xx :删除xx含有apple的行

sed '2a hehe' xx :在第二行后添加“hehe”

sed '2i hehe' xx :在第二行前添加“hehe”

sed '2a hehe\

haha' xx :添加换行

sed '2,3c haha' xx :将2-3行替换为haha

sed -n '2,3p' xx :只打印2-3行(-n取消默认打印)

sed 's/xx/oo/g' x.txt :将x文件中的xx替换为oo

sed -i '$a #This is my first sed practice' xx :在xx行尾插入一行文字

sed -i 's/root/toor/g' xx :将xx文件中的root替换为toor

sed -i /"web_name"/ a\ "$date" $config :在文件中前面加入web_name (a\为追加命令)

详解:http://www.cnblogs.com/edwardlost/archive/2010/09/17/1829145.html


九、awk是一个强大的文本分析工具,相对于grep的查找,sed的编辑。

awk '{pattern + action}' {filenames}

last -n 5 | awk '{print $1}' :显示最近登录的5个账户

cat /etc/passwd | awk -F ':' '{print $1}' :显示用户名

cat /etc/passwd | awk -F ':' '{print $1 "\t" $3}' :显示用户名和对应shell,tab键隔开

cat /etc/passwd | awk -F ':' 'BEGIN{print "name" "\t" "shell"} {print $1 "\t" $3} END{print END}' :在显示的时候插入首句和尾句

awk -F ':' '/root/{print $7}' /etc/passwd :显示含有root行的shell

awk '{count++;print $0;} END{print "user count is",count}' /etc/passwd :统计用户数并输出

这里没有初始化count,虽然默认是0,但是妥当的做法还是初始化为0:

awk 'BEGIN {count=0;print "[start]user count is ", count} {count=count+1;print $0;} END{print "[end]user count is ", count}' /etc/passwd

统计某个文件夹下的文件占用的字节数

ls -l |awk 'BEGIN {size=0;} {size=size+$5;} END{print "[end]size is ", size}'

如果以M为单位显示:

ls -l |awk 'BEGIN {size=0;} {size=size+$5;} END{print "[end]size is ", size/1024/1024,"M"}'