linux顺序控制与管道最爱grep和其他sort、cut、echo、cut命令。。。
uniq命令
可以用于过滤或者输出重复行。
uniq -dc //输出重复过的行(重复的只输出一个)及重复次数
uniq -D //输出所有重复的行
history | cut -c 8-14| sort| uniq
//每行第8到地14个字符 排序因为uniq命令只能去连续重复的行,不是全文去重
sort
$ cat /etc/passwd | sort -t':' -k 3 -n
// 上面的-t参数用于指定字段的分隔符,这里是以":"作 为分隔符;
-k字段号用于指定对哪一个字段进行排序。
这里/etc/passwd文件的第三个字段为数字,
默认情况下是以字典序排序的,如果要按照数字排序就要加上-n参数
-r 反序
grep
# 查看环境变量中以"yanlou"结尾的字符串, $ 表示结尾
$ export | grep ".*yanlou$"
cut 命令从文件的每一行剪切字节、字符和字段并将这些字节、字符和字段写至标准输出。
如果不指定 File 参数,cut 命令将读取标准输入。必须指定 -b、-c 或 -f 标志之一。
参数:
-b :以字节为单位进行分割。这些字节位置将忽略多字节 字符边界,除非也指定了 -n 标志。
-c :以字符为单位进行分割。
-d :自定义分隔符,默认为制表符。
-f :与-d一起使用,指定显示哪个区域。
-n :取消分割多字节字符。仅和 -b
标志一起使用。如果字符的最后一个字节落在由 -b 标志的 List 参数指示的
范围之内,该字符将被写出;否则,该字符将被排除
cut [-bn] [file]
cut [-c] [file]
cut [-df] [file]
cat /etc/passwd|head -n 10
$ cut /etc/passwd -d ':' -f 1,6 | head -n 10
//上两对比,
打印/etc/passwd文件中以:为分隔符的第1个字段和第6个字段分别表示用户名和其家目录:
# 前五个(包含第五个)
$ cut /etc/passwd -c -5
# 前五个之后的(包含第五个)
$ cut /etc/passwd -c 5-
# 第五个
$ cut /etc/passwd -c 5
# 2到5之间的(包含第五个)
$ cut /etc/passwd -c 2-5
命令控制 &&、||
which cowsay>/dev/null && echo "exist" || echo "not exist"
//which ,将输出信息重定向到/dev/null文件中,
/dev/null属于字符特殊文件,它属于空设备,是一个特殊的设备文件,它会丢弃一切写入其中的数据,写入它的内容都会永远丢失,而且没有任何可以读取的内容。
&& 当前面命令的 $? 为 0 时执行
|| 当前面命令的 $? 为 1 时执行
使用echo $? 查看命令是否执行情况
shell中的特殊变量:
变量名
含义
$0
shell或shell脚本的名字
$*
以一对双引号给出参数列表
$@
将各个参数分别加双引号返回
$#
参数的个数
$_
代表上一个命令的最后一个参数
$$
代表所在命令的PID
$!
代表最后执行的后台命令的PID
$?
代表上一个命令执行后的退出状态
echo $?
如果返回值是0,就是执行成功;如果是返回值是0以外的值,就是失败。