seq 产生数字序列

seq 1 10
-w: 等宽,不足前补0
seq -w 1 100

wc

wc = word count

[xiehaibing@localhost ~]$ wc /etc/services
 11176  61033 670293 /etc/services   # 行数,单词数,字符数

 [xiehaibing@localhost ~]$ wc  /etc/*conf
    3     9    55 /etc/asound.conf
   10    72   449 /etc/sysctl.conf
    2     2    37 /etc/vconsole.conf
   26   126   970 /etc/yum.conf
  818  3789 26796 total    # 汇总

具体使用方法:

  • -l : line
  • -w : word
  • -c : character
[xiehaibing@localhost ~]$ wc -l services
11176 services
[xiehaibing@localhost ~]$ wc -c services
670293 services
[xiehaibing@localhost ~]$ wc -w services
61033 services

举例:
求出/etc/*conf总的行数

wc -l /etc/*conf

sort (order by )

-n: 按照数字排序,默认按照字母大小排序。
-k: 指定字段排序
-k2nr -k2nr ….
-u: 去重, uniq 也是去重.
-t: 指定分隔符。

[root@slave02 ~]# head 000004.csv  | sort -t, -k4nr
2020-11-20,'000004,国农科技,31.46,33.33,30.55,32.42,32.62,-1.16,-3.5561,17.91,15031255,480862380.2,5192555582.5,2640333478.64
2020-11-23,'000004,国农科技,31.21,32.35,29.99,32.35,31.46,-0.25,-0.7947,11.784,9889942,304616869.62,5151292426.25,2619351807.64
2020-11-24,'000004,国农科技,30.17,31.19,29.62,30.77,31.21,-1.04,-3.3323,9.0188,7569179,229034682.37,4979637696.25,2532068056.28
2020-11-25,'000004,国农科技,29.77,30.1,29.0,29.0,30.17,-0.4,-1.3258,5.9398,4985114,147633364.26,4913616646.25,2498497382.68
2020-11-26,'000004,国农科技,28.7,29.7,28.5,29.7,29.77,-1.07,-3.5942,6.3908,5363600,155895224.96,4737010337.5,2408695830.8
2020-11-27,'000004,国农科技,28.35,28.91,28.18,28.7,28.7,-0.35,-1.2195,5.5476,4655900,132436736.72,4679241918.75,2379321491.4
2020-12-01,'000004,国华网安,27.7,28.4,27.3,28.1,27.62,0.08,0.2896,5.0914,4273040,118846852.26,4571957712.5,2324769146.8
2020-11-30,'000004,国农科技,27.62,28.35,27.6,28.2,28.35,-0.73,-2.575,4.8055,4033100,112340787.86,4558753502.5,2318055012.08
2020-12-02,'000004,国华网安,26.38,27.7,26.19,27.4,27.7,-1.32,-4.7653,7.2449,6080383,161804987.84,4354088247.5,2213985923.92
[root@slave02 ~]# 

-o : 把结果写入文件
cat *conf |sort -u -o uniq.txt

对文本进行排序,默认是使用字符串排序。
比如


[xiehaibing@localhost ~]$ cat number
12434
34
-988
444
353

4445
9
2
[xiehaibing@localhost ~]$ sort number
12434
12434
2

555
9
-988
[xiehaibing@localhost ~]$ sort -n number
-988
2
9
34
333
353
434
444
444
445
455
555
555
4445
12434
12434

对指定列进行排序,使用-k,如果是数字排序 ,-n,如果是从大到小,-r

[xiehaibing@localhost ~]$ sort -nr -k2 n.txt
24      40
17      39
110     38
28      37
20      36
21      35
11      34
14      33
26      32
13      31
27      30
16      29
23      28
19      27
12      26
18      25
29      24
30      23
15      22
25      21

#tr 文本替换和删除

  • -s
    把w命令的结果的连在一起的空格压缩为一个空格

w | tr -s ' '

-d: 删除

w | tr -d ' '

替换
tr [a-z] [A-Z] *conf
把所有文件的内容的小写字母改成大写字母

uniq 去重 (distinct)

用法:
-c: 计数重复行或者字段

在使用uniq之前,必须调用sort命令排序。
uniq只支持从管道读取,不支持文件的读取。

shuf 打乱顺序

paste

假如a,b1文件都是20行,下面的命令可以合并4列。

[xiehaibing@localhost ~]$ paste a b1 b1 a | rev |tac
71      93      93      71
91      72      72      91
12      53      53      12
31      13      13      31
21      62      62      21
92      42      42      92
81      52      52      81
62      23      23      62
72      03      03      72
01      83      83      01
52      12      12      52
51      22      22      51
11      43      43      11
03      32      32      03
22      02      02      22
42      04      04      42
61      92      92      61
41      33      33      41
32      82      82      32
82      73      73      82
02      63      63      02

cut

截取字符串

-d: 指定分隔符
-b:取从第几个字母到第几个字母

echo "hello" | cut -b2-4 
ell

-f: 取的第几个字段

echo "name,gender,score" | cut -d',' -f2,1
name,gender
[yanfeng@slave02 ~]$ ls -1 *conf
asound.conf
chony.conf
[yanfeng@slave02 ~]$ ls -1 *conf | cut -d. -f1
asound
chrony

rev

镜像
echo abc|rev => cba

tac (cat)

反向输出

#paste

xargs 交换参数

一般使用方法,接受管道,然后把管道的每一行作为参数,给他后面的linux命令去执行
-i: 表示可以使用{}代替前面的每一行数据.
把当前所有*conf文件备份
ls -1 *conf | xargs -i cp {} {}.bak
-I:指定占位符
ls -1 *conf | xargs -I[] cp [] [].bal

作者:严锋  创建时间:2023-12-06 09:29
最后编辑:严锋  更新时间:2025-05-09 15:48