shell文本命令

cut命令

从一个文本文件或者文本流从提取文本列

参数

-d: 用什么字符来分隔文本,

-f: 取分隔后的第几列,支持格式 : n; n1,n2; n1-n2; n1-;

示例

1
2
3
4
5
text='/sbin:/usr/sbin:/usr/local/bin:/usr/x11R6/bin'

echo $test | cut -d '':'' -f 1-3

# /bin:/usr/bin:/sbin:

sort 命令

对文件的行进行排序,并将结果写到标准输出,如果指定多个文件,那么sort命令将这些文件链接起来,并当做一个文件进行排序

参数

-f : 忽略大小写的差异

-b : 忽略最见面的空格符部分

-M : 以月份的名字来排序

-n : 使用纯数字来进行排序,默认是以文字形态来排序的

-r : 反向排序

-u : 相同的数据中心,仅出现一行代表

-t :分隔符,默认是用tab键来分隔

-k : 以哪个区间来进行排序

示例

1
2
3
cat /test.txt  | sort -t  ":"  -k 3rn

# 对文件每行进行: 分隔, 并取第三列进行反向排序,并且使用数字来排序

wc 命令

统计文本的行数和字符数量等

参数

-l :统计行数

-w : 统计单词水浪

-m : 统计字节数量

sed 命令

对文本的内容进行替换, 删除,更新等操作

命令基本格式

1
sed [选项]  [脚本命令] 文件名

命令参数

-e : 该选项会将其后跟的脚本命令添加到已有的命令中。

-f :该选项会将其后文件中的脚本命令添加到已有的命令中

-n : 默认情况下,sed 会在所有的脚本指定执行完毕后,会自动输出处理后的内容,而该选项会屏蔽启动输出,需使用 print 命令来完成输出。

-i : 此选项会直接修改源文件,要慎用。

脚本命令

替换脚本命令s

命令格式

1
[address]s/pattern/replacement/flags

常见flag

n 1~512 之间的数字,表示指定要替换的字符串出现第几次时才进行替换,例如,一行中有 3 个 A,但用户只想替换第二个 A,这是就用到这个标记;
g 对数据中所有匹配到的内容进行替换,如果没有 g,则只会在第一次匹配成功时做替换操作。例如,一行数据中有 3 个 A,则只会替换第一个 A;
p 会打印与替换命令中指定的模式匹配的行。此标记通常与 -n 选项一起使用。
w file 将缓冲区中的内容写到指定的 file 文件中;
& 用正则表达式匹配的内容进行替换;
\n 匹配第 n 个子串,该子串之前在 pattern 中用 () 指定。
\ 转义(转义替换部分包含:&、\ 等)。

使用示例

1
2
sed 's/test/trial/2' data4.txt
# 可以看到,使用数字 2 作为标记的结果就是,sed 编辑器只替换每行中第 2 次出现的匹配模式。

删除脚本命令

命令格式

1
[address]d

使用示例

1
2
3
sed '2,3d' data6.txt    # 删除第2、3行的数据
sed '/1/,/3/d' data6.txt # 删除1~3行的数据
sed '3,$d' data6.txt # 删除第3行到最后一行的数据

插入数据行命令

命令格式

1
[address]a(或 i)\新文本内容

备注: a 命令表示在指定行的后面附加一行,i 命令表示在指定行的前面插入一行

使用示例

1
2
sed '3a\
> This is an appended line.' data6.txt # 将一个新行附加到数据流中第三行后

替换脚本命令c

命令格式

1
[address]c\用于替换的新文本

使用示例

1
2
3
4
5
6
7
sed '3c\
> This is a changed line of text.' data6.txt
# sed 编辑器会修改第三行中的文本

sed '/number 3/c\
> This is a changed line of text.' data6.txt
# sed 编辑器会修改包含number 3 的行

转换脚本命令

命令格式

1
[address]y/inchars/outchars/

使用示例

1
sed 'y/123/789/' data8.txt  # 将1=>7, 2=>8, 3=>9
刘小恺(Kyle) wechat
如有疑问可联系博主