- set -e
在"set -e"之后出现的代码,一旦出现返回值非零,整个脚本就立刻退出(避免脚本报错后继续执行,导致危险操作)
set -e
exit 0 命令正常退出
exit 1 命令非正常退出
echo $? 获取上次命令执行的结果,如果是0就是正常执行,非0就是执行异常
- cat
查看文件内容
cat file
合并文件内容
cat file1 file2 file3 > file
- sort
对文本内容进行排序
sort [选项参数] file [-k file1,file2]
[选项参数]
-u 去重
-r 反序排列
-n 按照数值大小排序(默认数字会按字符排序)
-t 指定排序时所用的列分隔符
-k 按指定列排序
注:sort默认按第一列以ASCII码次序排列
$ cat test.txt
Apple 15
Coconut 7
Banana 20
Apple 15
$ sort
Apple 15
Apple 15
Banana 20
Coconut 7
$ sort -u
Apple 15
Banana 20
Coconut 7
$ sort -u -k 2
Apple 15
Banana 20
Coconut 7
$ sort -u -n -k 2
Coconut 7
Apple 15
Banana 20
- uniq
删除文本中的重复行(uniq检查重复行时,只会检查相邻的行,所以去重一般与sort结合,或直接使用sort -u)
- awk
是一种处理文本文件的语言,用于逐行读取文件内容,并以默认分隔符(空格/TAB)做行切片,再对每行切片的内容进行分析处理
awk [选项参数] 'BEGIN{} /字符/ {command1; command2...} END{}' file
[选项参数] -F 指定分隔符,-f 调用脚本,-v 定义变量 var = value
'' 行匹配代码块,只能用单引号,内部放置行处理代码
BEGIN {} 初始化代码块,在对每行处理前执行的代码(引用全局变量、设置分隔符等)
/字符/ 匹配代码块,可以是字符串或正则表达式
{} 命令代码块,包含1条或多条命令,多条命令分号分割
END {} 结束代码块,在对每行处理后执行的代码(最终计算,输出结尾摘要等)
awk常用的内置变量、运算符及命令:
$0 完整当前行
$n 当前行切片后的第n个字段
NR 读出的行数量
NF 读出的字段数量
$ 字段引用
print 打印命令
awk '{print}' test.txt //默认以空格做行切片,并输出整行,等价于'{print $0}'
awk '{print $1,$3}' test.txt //默认以空格做行切片,并输出第一、第三列
awk -F, '{print $1}' test.txt //以逗号,做行切片,并输出第一列
awk -f script.awk test.txt //等价
$ cat script.awk
#初始化代码块
BEGIN {
FS = ","
}
#命令代码块
{
print $1
}
#结尾代码块
END {
}