[命令] Linux 命令 uniq (文件里字符重复的管理)

案例一:uniq 命令去重

# cat test.txt 
a1
b2
c3
a1
d2
e3
a1
c3

# sort test.txt  | uniq
a1
b2
c3
d2
e3

(补充:这里以给 test.txt 文件里的字符为例)

案例二:uniq 只显示重复的行

# cat test.txt 
a1
b2
c3
a1
d2
e3
a1
c3

# sort test.txt  | uniq -d
a1
c3

(补充:这里以只显示 test.txt 文件里重复的行为例)

案例三:uniq 只显示不重复的行

# cat test.txt 
a1
b2
c3
a1
d2
e3
a1
c3

# sort test.txt  | uniq -u
b2
d2
e3

(补充:这里以只显示 test.txt 文件里不重复的行为例)

案例四:显示每个字符出现的次数

# cat test.txt 
a1
b2
c3
a1
d2
e3
a1
c3

# sort test.txt  | uniq -c
      3 a1
      1 b2
      2 c3
      1 d2
      1 e3

(补充:这里以显示 test.txt 每个字符出现的次数为例)

[命令] Linux 命令 sort(对数字或字母进行排序)

内容一:sort 命令的选项

1) -b 排序时忽略每行前面的空格
2) -c 检查是否已排序
3) -f 排序时忽略大小写字母
4) -n 按照数值到大小进行排序
5) -o 将排序结果导入到指定文件
6) -r 以相反的顺序进行排序
7) -t 指定排序的分隔符
8) -k 以指定的列进行排序

内容二:sort 命令的案例

2.1 案例一:检查是否已经排序

# cat test.txt
3
5
4
2
1

# sort -c test.txt 
sort: test.txt:3: disorder: 4

(补充:这里以检查 test.txt 文件里的排列为例)

2.2 案例二:sort 排序 1 列数字

# cat test.txt
3
5
4
2
20
1

# sort -n test.txt 
1
2
3
4
5
20

(补充:这里以排列 test.txt 文件里的列为例)

2.3 案例三:sort 排序 1 列字母

# cat test.txt 
c
e
d
b
a

# sort test.txt 
a
b
c
d
e

(补充:这里以排列 test.txt 文件里的列为例)

2.4 案例四:sort 以相反的顺序进行排序

# cat test.txt 
c
e
d
b
a

# sort -r test.txt 
e
d
c
b
a

(补充:这里以排列 test.txt 文件里的列为例)

2.5 案例五:sort 以 2 列中的第 1 列进行排序

# cat test.txt 
3 d
5 c
4 a
2 e
1 b

# sort test.txt 
1 b
2 e
3 d
4 a
5 c

(补充:这里以排列 test.txt 文件里的列为例)

2.6 案例六:sort 以 2 列中的第 2 列进行排序

# cat test.txt 
3 d
5 c
4 a
2 e
1 b

# sort -k2 test.txt 
4 a
1 b
5 c
3 d
2 e

(补充:这里以排列 test.txt 文件里的列为例)

2.7 案例七:sort 对 IP 地址进行排序

# cat test.txt 
10.0.200.10
172.16.50.10
192.168.100.1
192.168.100.10
172.16.50.1
10.0.200.1

# sort test.txt
10.0.200.1
10.0.200.10
172.16.50.1
172.16.50.10
192.168.100.1
192.168.100.10

(补充:这里以排列 test.txt 文件里的列为例)

2.8 案例八:sort 以 IP 地址的第三组数字进行排序

# cat test.txt 
10.0.200.10
172.16.50.10
192.168.100.1
192.168.100.10
172.16.50.1
10.0.200.1

# sort -t'.' -k3n test.txt
172.16.50.1
172.16.50.10
192.168.100.1
192.168.100.10
10.0.200.1
10.0.200.10

(补充:这里以排列 test.txt 文件里的列为例)

[命令] Linux 命令 seq (显示数字序列)

内容一:seq 命令格式

1) seq <option> <first number>
2) seq <option> <first number> <last number>
3) seq <option> <first number> <increment> <last number>

内容二:seq 命令的选项

1) -f 指定序列的格式
2) -s 指定序列的间隔符
3) -w 使序列宽度相同
4) –equal-width 使序列宽度相同

内容三:seq 命令的使用案例

3.1 案例一:seq 显示普通的数字序列

3.1.1 显示从 1 到某个数字到数字序列
# seq 5
1
2
3
4
5

(补充:这里以显示 1 到 5 的数字序列为例)

3.1.2 显示从某个数字开始到某个数字结束的数字序列
# seq 3 7
3
4
5
6
7

(补充:这里以显示 3 到 7 的数字序列为例)

3.1.3 显示从某个数字开始到某个数字结束有数值差距的数字序列
# seq 4 2 8
4
6
8

(补充:这里以显示 4 到 8 数值差距为 2 的数字序列为例)

3.2 案例二:seq 显示指定前缀的数字序列

3.2.1 显示将某个字符串作为前缀的数字序列
# seq -f "num%g" 5
num1
num2
num3
num4
num5

(补充:这里以显示 1 到 5 并且将 num 作为前缀的数字序列为例)

3.2.2 显示将某个字符串和几个空格作为前缀的数字序列
# seq -f "num%3g" 5
num  1
num  2
num  3
num  4
num  5

(补充:这里以显示 1 到 5 并且将 num 和 2 个空格作为前缀的数字序列为例)

3.2.3 显示将某个字符串和几个字符作为前缀的数字序列
# seq -f "num%03g" 5
num001
num002
num003
num004
num005

(补充:这里以显示 1 到 5 并且将 num 和 2 个 0 作为前缀的数字序列为例)

3.3 案例三:seq 显示指定间隔符的数字序列

3.3.1 显示没有间隔符的数字序列
# seq -s '' 5
12345

(补充:这里以显示 1 到 5 并且没有间隔符的数字序列为例)

3.3.2 显示间隔符是空格的数字序列
# seq -s ' ' 5
1 2 3 4 5

(补充:这里以显示 1 到 5 并且以空格作为间隔的数字序列为例)

3.3.3 显示间隔符是某个字符的数字序列
# seq -s '#' 5
1#2#3#4#5

(补充:这里以显示 1 到 5 并且以 # 作为间隔的数字序列为例)

3.4 案例四:seq 显示指定宽度的数字序列

# seq -w 1 10
01
02
03
04
05
06
07
08
09
10

或者:

# seq --equal-width 1 10
01
02
03
04
05
06
07
08
09
10

3.5 案例五:seq 使用变量显示数字序列

# a=5
# seq $a
1
2
3
4
5

(补充:这里以将变量 a 的值设置为 5 ,并且显示 1 到变量 a 的值的数字变量为例)

3.6 案例六:将 seq 显示的数字序列导入到一个文件里

# seq 1 5 > test.txt
# cat test.txt
1
2
3
4
5

或者:

# seq 1 5 | xargs -I{} echo {} > test.txt

# cat test.txt
1
2
3
4
5

(补充:这里以显示 1 到 5 的数字序列并导入到 test.txt 文件为例)

[命令] Linux 命令 echo (显示内容)

内容一:echo 的命令选项

1) -n 输出不换行
2) -e 处理某些特殊字符
\a 蜂鸣声报警
\b 删除前面一个字符
\c 在末尾不换行
\e 转义起始符
\033 转义起始符
\x1B 转义起始符
\f 换行,同时光标停在原处
\n 换行
\r 不换行,同时光标停在原处
\t tab,水平方向
\v tab,垂直方向
\ 输出 \
\Onnn 输出八进制 ASCII 字符
\xHH 输出十六进制 ASCII 字符
3) -E 不再转义

内容二:echo 的显示选项

1) \033[0m 将所有显示属性关闭
2) \033[1m 变粗/高亮
3) \033[2m 变暗
4) \033[4m 下划线
5) \033[5m 闪烁
6) \033[7m 反显
7) \033[8m 消隐
8) \033[37m<word>\33[0m 设置字体颜色,这里以将字体颜色设置为白色为例
9) \033[40m<word>\33[0m 设置背景颜色,这里以将背景颜色设置为白色为例
10) \033[<n>A 将光标向上移 n 行
11) \033[<n>B 将光标向下移 n 行
12) \033[<n>C 将光标向右移 n 行
13) \033[<n>D 将光标向左移 n 行
14) \033[;H 将光标跳转到 x 和 y 位置
15) \033[2J 清屏
16) \033[K 将光标所在位置到行尾的所有位置全部清除
17) \033[s 将光标位置保存
18) \033[u 将光标位置恢复
19) \033[?25l 将光标隐藏
20) \033[?25h 将光标显示


补充:
1) 这里的 \033 代表转义起始符,转移起始符可以是 \e 或者 \033 或者 \x1B,所以这里的 \033 可以用另外 2 个符号替代
2) 这里的 m 代表转义终止符,所有转义在这里结束,如果要使用多个显示选项,可以在最后 1 个显示选项后面添加 m

内容三:echo 转换输出结果颜色的案例

3.1 显示不同颜色的显示选项案例

3.1.1 显示不同颜色文字的显示选项案例
序号文字颜色显示选项
1默认色\033[39m
2黑色\033[30m
3红色\033[31m
4绿色\033[32m
5黄色\033[33m
6蓝色\033[34m
7品红色\033[35m
8青色\033[36m
9浅灰色\033[37m
10深灰色\033[90m
11淡红色\033[91m
12浅绿色\033[92m
13浅黄色\033[93m
14浅蓝色\033[94m
15浅品红色\033[95m
16浅青绿色\033[96m
17白色\033[97m
文字颜色显示选项表
3.1.2 显示不同颜色背景的显示选项案例
序号背景颜色显示选项
1默认色\033[49m
2黑色\033[40m
3红色\033[41m
4绿色\033[42m
5黄色\033[43m
6蓝色\033[44m
7品红色\033[45m
8青色\033[46m
9浅灰色\033[47m
10深灰色\033[100m
11浅红色\033[101m
12浅绿色\033[102m
13浅黄色\033[103m
14浅蓝色\033[104m
15浅洋红色\033[105m
16浅青色\033[106m
17白色\033[107m
背景颜色显示选项表

3.2 显示不同颜色字体的案例

# echo -e "\033[30m black characters \033[0m" 
# echo -e "\033[31m red characters \033[0m"
# echo -e "\033[32m green characters \033[0m" 
# echo -e "\033[33m yellow characters \033[0m"
# echo -e "\033[34m blue characters \033[0m"
# echo -e "\033[35m purple character \033[0m"
# echo -e "\033[36m sky blue character \033[0m"
# echo -e "\033[37m white character \033[0m"


补充:
1) 这里的 \033 代表转义起始符,转移起始符可以是 \e 或者 \033 或者 \x1B,所以这里的 \033 可以用另外 2 个符号替代
2) 这里的 [ 代表开始定义颜色
3) 这里的 m 代表转义终止符,所有转义在这里结束
4) 这里的 \e[0m 代表将所有显示属性关闭,也就是回归默认值,建议每次 echo 命令后面都添加

3.3 显示不同颜色背景的案例

# echo -e "\033[40;m black background \033[0m" 
# echo -e "\033[41;m red background \033[0m"
# echo -e "\033[42;m green background \033[0m" 
# echo -e "\033[43;m yellow background \033[0m"
# echo -e "\033[44;m blue background \033[0m"
# echo -e "\033[45;m purple background \033[0m"
# echo -e "\033[46;m sky blue background \033[0m"
# echo -e "\033[107;m white background \033[0m"


补充:
1) 这里的 \033 代表转义起始符,转移起始符可以是 \e 或者 \033 或者 \x1B,所以这里的 \033 可以用另外 2 个符号替代
2) 这里的 [ 代表开始定义颜色
3) 这里的 m 代表转义终止符,所有转义在这里结束
4) 这里的 \e[0m 代表将所有显示属性关闭,也就是回归默认值,建议每次 echo 命令后面都添加

3.4 显示不同颜色字体和不同颜色背景的案例

# echo -e "\033[40;37m white characters on black background \033[0m"
# echo -e "\033[41;37m white characters on red background \033[0m"
# echo -e "\033[42;37m white characters on green background \033[0m"
# echo -e "\033[43;37m white characters on yellow background \033[0m"
# echo -e "\033[44;37m white characters on blue background \033[0m"
# echo -e "\033[45;37m white characters on purple background \033[0m"
# echo -e "\033[46;37m white characters on sky blue background \033[0m"
# echo -e "\033[47;30m black characters on white background \033[0m"


补充:
1) 这里的 \033 代表转义起始符,转移起始符可以是 \e 或者 \033 或者 \x1B,所以这里的 \033 可以用另外 2 个符号替代
2) 这里的 [ 代表开始定义颜色
3) 这里的 m 代表转义终止符,所有转义在这里结束
4) 这里的 \e[0m 代表将所有显示属性关闭,也就是回归默认值,建议每次 echo 命令后面都添加

内容四:echo 转换输出结果结构的案例

4.1 案例一:不换行带 tab 输出

# for month in Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec;do echo -e "$month\t\c";done
Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec

(补充:这里以不换行带 tab 输出 Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec 为例)

4.2 案例二:先清屏再不换行输出

# echo -e "\033[2J\033[10A\Eternal Center\c \e[0m "

(补充:这里以先清屏再不换行输出 Eternal Center 为例)


补充:
1) 这里的 \033 代表转义起始符,转移起始符可以是 \e 或者 \033 或者 \x1B,所以这里的 \033 可以用另外 2 个符号替代
2) 这里的 [ 代表开始定义颜色
3) 这里的 m 代表转义终止符,所有转义在这里结束
4) 这里的 \e[0m 代表将所有显示属性关闭,也就是回归默认值,建议每次 echo 命令后面都添加