变量:
Linux中有很多变量,可以使用echo命令读取其值,如echo $HOME,echo $PATH等。
Linux中变量赋值使用=号,=号两边不能有空格,变量中若有空格需要使用单引号或双引号将变量内容括起来。
若该变量为扩增变量内容时,则可用”$变量名称”累加内容,如:PATH=”$PATH”:/home/bin。
通常我们可以约定,将系统变量都定义为大写,而自定义变量用小写。
转义字符\可以将特殊符号变为一般字符,如Enter、空格、’等。当行过长,可以使用\然后直接Enter换行。此时,Enter前有\转义,将不再具有执行意义了,只是换行。
取消变量设定,使用unset $var_name。
命令别名:
使用alias可以将指令串命名为自定义字符,例如,想知道多个目录底下的所有档案(包含隐藏档)及所有的文件属性,那么就必须反复要下达ls -al这样的指令串。现在,利用alias就可以实现不需要每次都输入这样的指令串。指令语句:alias ll=’ls –al’,然后我们每次只要输入ll就相当于完全指令ls –al,需要注意的是,ll后没有空格,=后也没有空格。
查看别名命令,直接输入alias然后Enter执行即可。
取消别名命令,使用unalias后跟要取消别名的命令即可。
输入输出:
标准输入(stdin):代码为0,使用<或<<,其中<<为结束输入字符设定,并不是追加输入,需要注意。
标准输出(stdout):代码为1,使用>或>>。>的输出若文件不存在则新建,存在则先清空内容再写入;>>的输出若文件不存在则新建,存在则追加。
标准错误输出(stderr):代码为2,使用2>或2>>;
指令传递:
&&:cmd1&&cmd2表示若cmd1执行完毕且正确,则执行cmd2;若cmd1执行完毕且错误则cmd2不执行。
||:cmd1&&cmd2表示若cmd1执行完毕且正确,则cmd2不执行;若cmd1执行完毕且错误则执行cmd2。
|:管线命令,传递处理指令数据流。
【cut】根据域分隔符取出行中指定域数据,使用语法:传入数据|cut [选项],常用选项:
-d:后面跟分隔字符,用单引号括起,跟-f一起使用;
-f:依据-d的分隔符将行切割,然后取出-f后指定域的字符;
-c:取出-c指定的字符区间,如12-20,12-;
【grep】在输入中搜索指定内容,若含有该内容则取出行,使用语法:grep [选项] [着色] ‘搜索字符串’ fliename,常用选项:
-c:计算找到‘搜索字符串’的次数;
-i:忽略大小写;
-n:输出行号;
-v:反向选择,输出不包含‘搜索字符串’的行;
着色:
--color=auto,可以将找到的关键字部分着色显示。
【sort】将输入进行排序,使用语法:sort [选项] file,常用选项:
-b:忽略最前面空格部分;
-f:忽略大小写;
-n:以纯数据形式排序(默认以文本形式);
-u:相同数据排序仅出现一行;
-r:反向排序;
-M:以月份排序;
-t:指定分隔符(默认tab);
-k:根据分隔域,以指定域排序;
【uniq】对排序后的内容进行去重,常用选项:
-i,忽略大小写;
-c,对重复次数进行计算;
【wc】统计行、字、字符,常用选项:
-l:仅统计行;
-w:仅统计单词数(英文);
-m:仅统计字符数;
若不加任何选项则三项全统计;
【tee】屏幕、文件双输出,选项,-a,以追加形式写入文件。
【tr】删除或替换字符,常用选项:
-d:删除字符串;
-s:取代掉重复的字符;
不加选项可用于替换,如tr ‘[a-z]’ ‘A-Z’,表示将所有小写替换为相应大写;
【sed】数据替换、删除、新增、搜索等,语法:sed [选项] ‘[动作]’,常用选项:
-e:多个动作,则每个动作前要有-e。
-n:使用安静(silent)模式。在一般sed的用法中,所有来自STDIN的数据一般都会被列出到屏幕上。但如果加上-n参数后,则只有经过sed特殊处理的那一行(或者动作)才会被列出来。
-f:执行指定文档的动作。直接将sed的动作写在一个档案内,-f filename则可以执行filename内的sed动作。
-r:sed的动作支持的是延伸型正则表示法的语法。(预设是基础正则表示法语法)
-i:直接修改读取的档案内容,而不是由屏幕输出。
动作可仅到指定行进行,如“[n1][,n2] action”,10,20 动作,是动作仅作用于10到20行。常用动作(注意前面没有-,动作整体用单引号):
a:新增。a的后面可以接字符串,而这些字符串会在新的一行出现(目前的下一行)。
i:插入。i的后面可以接字符串,而这些字符串会在新的一行出现(目前的上一行),在新增多行时,可以用\然后换行继续输入。
c:全替换。c的后面可以接字符串,这些字符串可以取代n1,n2之间的行!
s:指定替换。通常搭配正则进行指定替换,如:1,20s/old/new/g。当然,若我们把new不写任何内容,这个句子就成删除指定字符了。
d:删除行。
p:输出。亦即将某个选择的数据印出,通常p会与参数sed –n搭配。
【awk】sed常将数据作为行进行编辑处理,而awk则将行分成“字段”进行数据处理。语法:awk '条件类型1 {动作1} 条件类型2 {动作2}...' filename。
注意:
awk的条件判断及动作都在引号内;
awk的动作在大括号内,有几个大括号就是有几个动作;
内置变量使用大写,且不需要$变量符号;
awk的处理流程:
读入一行数据,依据分隔符将其填入变量$0、$1、$2…等中,其中$0是全行数据。
依据“条件类型”的限制,判断是否需要进行后面的动作,若无条件类型则表示动作执行前不做判断。
做为所有的条件判断及动作,然后重复执行下面的行。
awk内置变量:
NF:每一行拥有的字段总数;
NR:目前awk所处理的是第几行数据;
FS:目前的分隔符,默认为空格;
条件与赋值:
条件比较可用,“>、<、>=、<=、==、!=”,需要注意的是等于是==,而一个=是赋值。
设定分隔符就相当于一个动作,而设定就相当于一个赋值,如:awk '{FS=”:”} $3<10 {print $1 “\t” $3}',其中,第一个动作就是设定分隔符。需要注意的是,这种写法并不处理第一行,原因很简单,根据awk流程,先读入,采用默认分隔符分隔,然后赋给变量,再交给动作处理的。在读第二行时,分隔符才被在第一行修改为“:”。要想改变这种情况,就要利用初始化关键字BEGIN作为条件放在动作前。
若动作中有多个指令,则指令间使用“;”隔开。