shell用到的命令

一.shift

参数左移

until [ $# -eq 0 ]
do
echo "第一个参数为: $1 参数个数为: $#"
shift
done

二.wc

该命令用于统计指定文件中的字节数、字数、行数。该命令各选项含义如下:

-l 统计行数

-w 统计字数

-c 统计字节数

这些选项可以组合使用。输出列的顺序和数目不受选项的顺序和数目的影响。总是按下述顺序显示并且每项最多一列。

行数、字数、字节数、文件名

 

三.管道和xargs

管道:

管道左边命令的输入作为管道右边命令的输入(命令的输入是一定的),不是参数,并不是所有命令都支持管道

xargs:

将管道左边的命令输出结果作为右边命令的参数

 

四.df

查看磁盘剩余空间

用法:df [选项]... [文件]...显示每个<文件>所在的文件系统的信息,默认是显示所有文件系统.

长选项必须用的参数在使用短选项时也是必需的.

-a, --all 包括大小为 0 个块的文件系统

-B, --block-size=大小 块以指定<大小>的字节为单位

-h, --human-readable 以容易理解的格式印出文件系统大小 (例如 1K 234M 2G)

-H, --si 类似 -h,但取 1000 的次方而不是 1024

-i,  --inodes 显示 inode 信息而非块使用量

-k 即 --block-size=1K

-l, --local 只显示本机的文件系统

   --no-sync 取得使用量数据前不进行同步动作 (默认)

-P, --portability 使用 POSIX 兼容的输出格式

     --sync 取得使用量数据前先进行同步动作

-t, --type=类型 只印出指定文件系统为指定<类型>的信息

-T, --print-type 印出文件系统类型

-x, --exclude-type=类型 只印出文件系统不是指定<类型>信息

-v (忽略)

     --help 显示此帮助信息并离开

     --version 显示版本信息并离开

五.awk

http://www.cnblogs.com/ggjucheng/archive/2013/01/13/2858470.htmlawk是一个强大的文本分析工具,相对于grep的查找,sed的编辑,awk在其对数据分析并生成报告时,显得尤为强大。简单来说awk就是把文件逐行的读入,以空格为默认分隔符将每行切片,切开的部分再进行各种分析处理。

内置变量

 [A] FILENAME 当前输入文件的名。

 [A] FS 字段分隔符(默认是任何空格)。 

 [A] NF 表示字段数,在执行过程中对应于当前的字段数。

 [A] NR 表示记录数,在执行过程中对应于当前的行号。

 [A] OFMT 数字的输出格式(默认值是%.6g)。

 [A] OFS 输出字段分隔符(默认值是一个空格)。

 [A] ORS 输出记录分隔符(默认值是一个换行符)。

 [A] RS 记录分隔符(默认是一个换行符)。

基本写法 :

awk 'BEGIN{ i=0 } { i++ } END{ print i }' filename (这句能打印行数 相当于wc -l file)

awk 'BEGIN{a="100testa";if(a ~ /^100*/){print "ok";}}'  ~匹配~!不匹配正则表达式

六.sed

http://www.cnblogs.com/dong008259/archive/2011/12/07/2279897.html

http://www.cnblogs.com/lidabo/p/4928983.html

 

sed是一个很好的文件处理工具,本身是一个管道命令,主要是以行为单位进行处理,可以将数据行进行替换、删除、新增、选取等特定工作,下面先了解一下sed的用法
sed命令行格式为:
         sed [-nefri] ‘command’ 输入文本        

 

常用选项:
        -n∶使用安静(silent)模式。在一般 sed 的用法中,所有来自 STDIN的资料一般都会被列出到萤幕上。但如果加上 -n 参数后,则只有经过sed 特殊处理的那一行(或者动作)才会被列出来。
        -e∶直接在指令列模式上进行 sed 的动作编辑;
        -f∶直接将 sed 的动作写在一个档案内, -f filename 则可以执行 filename 内的sed 动作;
        -r∶sed 的动作支援的是延伸型正规表示法的语法。(预设是基础正规表示法语法)
        -i∶直接修改读取的档案内容,而不是由萤幕输出。       

 

常用命令:
        a   ∶新增, a 的后面可以接字串,而这些字串会在新的一行出现(目前的下一行)~
        c   ∶取代, c 的后面可以接字串,这些字串可以取代 n1,n2 之间的行!
        d   ∶删除,因为是删除啊,所以 d 后面通常不接任何咚咚;
         i   ∶插入, i 的后面可以接字串,而这些字串会在新的一行出现(目前的上一行);
         p  ∶列印,亦即将某个选择的资料印出。通常 p 会与参数 sed -n 一起运作~
         s  ∶取代,可以直接进行取代的工作哩!通常这个 s 的动作可以搭配正规表示法!例如 1,20s/old/new/g 就是啦!

七.sort

http://www.cnblogs.com/dong008259/archive/2011/12/08/2281214.html

sort命令是帮我们依据不同的数据类型进行排序,其语法及常用参数格式:
  sort [-bcfMnrtk][源文件][-o 输出文件]
补充说明:sort可针对文本文件的内容,以行为单位来排序。

参  数:
  -b   忽略每行前面开始出的空格字符。
  -c   检查文件是否已经按照顺序排序。
  -f   排序时,忽略大小写字母。
  -M   将前面3个字母依照月份的缩写进行排序。
  -n   依照数值的大小排序。
  -o<输出文件>   将排序后的结果存入指定的文件。
  -r   以相反的顺序来排序。
  -t<分隔字符>   指定排序时所用的栏位分隔字符。
  -k  选择以哪个区间进行排序。和-t一起使用,-t确定了有多少栏

  -u 除去重复行

让facebook.txt按照公司人数排序

$ sort -n -t ‘ ‘ -k 2 facebook.txt
guge 50 3000
baidu 100 5000
sohu 100 4500
google 110 5000

八.cut

http://www.cnblogs.com/dong008259/archive/2011/12/09/2282679.html

cut是一个选取命令,就是将一段数据经过分析,取出我们想要的。一般来说,选取信息通常是针对“行”来进行分析的,并不是整篇信息分析的。

(1)其语法格式为:
cut  [-bn] [file] 或 cut [-c] [file]  或  cut [-df] [file]

使用说明
cut 命令从文件的每一行剪切字节、字符和字段并将这些字节、字符和字段写至标准输出。
如果不指定 File 参数,cut 命令将读取标准输入。必须指定 -b、-c 或 -f 标志之一。

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

echo "昨夜星辰"|cut -b 1,2 

echo "昨夜星辰"|cut -b 1-3 (根据编码,unicode 为两个字符)

昨?

echo "昨夜星辰"|cut -bn 1,2

echo "aaad:ddccc"|cut -d : -f 1

aaad

九. du

du -s  该目录总共的大小

du file 指定文件的大小  

十. grep

grep [-acinv] [--color=auto] '搜寻字符串' filename
选项与参数:
-a :将 binary 文件以 text 文件的方式搜寻数据
-c :计算找到 '搜寻字符串' 的次数
-i :忽略大小写的不同,所以大小写视为相同
-n :顺便输出行号
-v :反向选择,亦即显示出没有 '搜寻字符串' 内容的那一行!

-r  : 读取目录下的所有文件
--color=auto :可以将找到的关键词部分加上颜色的显示喔! 

grep -n '^$' regular_express.txt查找空行

grep 的拓展能匹配更多的正则表达式

# egrep '3+' testfile

# grep -E '3+' testfile

# grep '3+' testfile

 

×× LC_ALL=C 是为了去除所有本地化的设置,让命令能正确执行。××

 

 

原文地址:https://www.cnblogs.com/chencesc/p/5000982.html