一、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"}'