目录
频道首页
✨linux中常用文本处理命令
收藏
0
xy20118 最近修改于 2024-05-09 19:20:36

前言

echo、sort、uniq、tr、cut

echo 输出

“echo”命令在Linux中用于在标准输出设备(通常是终端或屏幕)上显示一行文本。这个命令不仅可以用来显示文本,还可以插入环境变量的值,甚至可以用于测试其他命令的输出。简而言之,echo是向终端输出文本的简单工具。

!!#ffff00 基本用法!!

echo [选项] [字符串]

其中,[选项]是可选的,而[字符串]是你想要输出的文本内容。

无选项用法: 最简单的echo命令使用方式是直接跟上想要输出的文本:

[root@c1 ~]# echo 向日葵,sunflower
向日葵,sunflower

常用选项:

|选项 |作用 | |:--| |\n |插入换行符,输出换行 | |\r |光标移至行首,并且不换行 | |\s |当前shell的名称,如bash | |\t |插入Tab键(即制表符) | |\f |换行,但光标仍停留在原处 | |\ \ |表示插入\本身 | |\b |插入退格键,表示退格,不显示前一个字符 | |\c |抑制更多的输出或不换行 |

echo命令中,可以使用转义字符\n来表示换行 需要结合-e 进行使用 会在终端中输出两行文本

[root@c1 ~]# echo -e "first line \nsencond line"
first line 
sencond line

插入环境变量 比如显示当前用户的主目录

oot@c1 ~]# echo home is:$HOME
home is:/root

-n选项可以让echo命令在输出结束后不自动换行。这在需要连续输出多个字符串时非常有用

 [root@c1 ~]# echo -n "hello word"
hello word[root@c1 ~]#   

-s选项可以让echo命令在输出结束后不输出换行符,这对于脚本编写中需要连续输出多个字符串的情况非常有用:

echo -s "Hello, " "Linux!"

-E选项可以让echo命令忽略未设置的环境变量。这意味着,如果某个环境变量没有被设置,echo不会输出一个空行或者问号,而是直接忽略该变量:

echo -E "This is a test: $UNSET_VAR"
This is a test: 

如果UNSET_VAR没有被设置,上述命令只会输出This is a test:,而不会输出任何关于未设置变量的错误信息。

小拓展 打印颜色

[root@c1 ~]# echo -e '\033[43;31;1;5mhahahha\e[0m'
hahahha 

具有颜色的字符,其格式如下: 字符背景颜色字体颜色字符串 "\033[字符背景颜色;字体颜色𝑚字符串\033[0𝑚" \033[30m -- \033[37m 设置前景色 \033[40m -- \033[47m 设置背景色

#字符背景颜色范围: 40--47
40:黑
41:红
42:绿
43:黄
44:蓝
45:紫
46:深绿
47:白色

#字体颜色: 30--37
30: 黑
31: 红
32: 绿
33: 黄
34: 蓝
35: 紫
36: 深绿
37: 白色

加颜色只是以下控制码中的一种,下面是常见的一些ANSI控制码:

\033[0m 关闭所有属性
\033[1m 设置高亮度
\033[4m 下划线
\033[5m 闪烁
\033[7m 反显
\033[8m 消隐
\033[nA 光标上移n行
\033[nB 光标下移n行
\033[nC 光标右移n列
\033[nD 光标左移n列
\033[x;yH 设置光标位置x行y列
\033[2J 清屏
\033[K 清除从光标到行尾的内容
\033[s 保存光标位置
\033[u 恢复光标位置
\033[?25l 隐藏光标
\033[?25h 显示光标
\033[2J\033[0;0H 清屏且将光标置顶

释放内存

sudo sh -c 'echo 1 > /proc/sys/vm/drop_caches'
sudo sh -c 'echo 2 > /proc/sys/vm/drop_caches'
sudo sh -c 'echo 3 > /proc/sys/vm/drop_caches'  #常用

sort 排序

sort将文件的每一行作为一个单位相互比较,比较原则是从首字符向后依次按ASCII码进行比较,最后将他们按升序输出。(以行为单位排序输出) 语法格式:

sort [选项]  参数
cat file | sort 选项

常用选项:

|常用选项 |效果 | |:--| |-n |按照数字进行排序(默认升序) | |-r |反向排序(倒序) | |-u |在输出行中去除重复行 | |-t |指定字段分隔符,默认使用Tab键分隔 | |-k |指定排序字段(不指定则默认第一个字段) | |-f |忽略大小写,会将小写字母都转换为大写字母来进行比较 | |-b |忽略每行前面的空格 | |-o <输出文件> |将排序后的结果转存到指定文件中 |

先新建一个文件 随机输入字符。

[root@c1 ~]# cat ceshi.t 
1 2  3 
a b  c a b z 
1 1 1 3 5 
c
b
b
n

不加任何选项,则默认按首字母排序。

[root@c1 ~]# sort ceshi.t 

1 1 1 3 5 
1 2  3 
a b  c a b z 
b
b
c
n

!!#ffff00 sort -n!! 按照数字排序 默认升序

[root@c1 ~]# sort -n ceshi.t 
a b  c a b z 
b
b
c
n
1 1 1 3 5 
1 2  3 
3
4
6

!!#ffff00 sort -u 去重重复行!!

[root@c1 ~]# cat ceshi.t 
apple

banana

orange

pear

apple
[root@c1 ~]# sort -u ceshi.t  

apple
banana
orange
pear

sort -t,指定分隔符。-k,指定对第几个字段进行排序。

[root@c1 ~]# sort -t ":" -k 3 -n /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin

image

tr 替换 压缩 删除

tr命令常用来对来自标准输入的字符进行替换、压缩和删除。

cat 文件 | tr [选项]  参数

常用选项: |选项 |效果 | |:--| |-c |保留字符集1的字符,其他字符包括换行符\n用字符集2替换 | |-d |删除所有属于字符集1的字符 | |-s |将连续重复的字符串压缩成一个 | |-t |字符集2 替换 字符集1,不加选项效果相同 |

比如:

[root@c1 ~]# echo 192.168.64.20 |tr "." ":" # . 替换成 :
192:168:64:20 

常用项

小写字母替换成大写字母

[root@c1 ~]# echo ddc |tr 'a-z' 'A-Z'
DDC

!!#ffff00 遇见小d 换成大D 显示。!!

[root@c1 ~]# echo ddc |tr 'd' 'D'
DDc

!!#ffff00 -c,保留字符集1的字符,其他字符包括换行符\n用字符集2替换!!

[root@c1 ~]# echo -e "adb \ncba \nab"
adb 
cba 
ab

[root@c1 ~]# echo -e "adb \ncba \nab" |tr -c "ab\n" "0"
a0b0
0ba0
ab

!!#ffff00 -d,删除所有遇见的字符集 1!!

[root@c1 ~]# echo -e "adb \ncba \nab" |tr -d "a"
db 
cb 
b

!!#ffff00 -s,将连续重复的字符串压缩成一个。!!

[root@c1 ~]# echo "wwwwwhat?" |tr -s "w"
what?

!!#ffff00 过滤出文本中的非空行!!

[root@c1 ~]# cat ceshi.t   
apple

banana

orange

pear

apple
[root@c1 ~]# cat ceshi.t  |tr -s "\n"  #过滤出非空行 和grep -v “^$” 
apple
banana
orange
pear
apple

cut截取字段 切列

用于显示行中的指定部分,删除文件中指定字段。 语法: cut 选项 参数 cat file | cut 选项 参数

常用选项 效果

|选项 |作用 | |:--| |-d |指明分隔符(默认分隔符为Tab) | |-f 数字(常用) |按字段进行截取。指定第n个字段;1-3表示连续1到3字段;1,4,7表示第1、第4、第7个字段 | |-b |以字节为单位进行截取 | |-c |以字符为单位进行截取 | |–complement |排除所指定的字段 | |–output-delimiter |更改输出内容的分隔符 |

-d 指定分隔符 f 3 取第三列 。

[root@c1 ~]# cut -d ":" -f 3 /etc/passwd
0
1
2
3
4
5
6
7

-c 按照数字 取字符。

[root@c1 ~]# i=123456
[root@c1 ~]# echo $i
123456
[root@c1 ~]# echo $i |cut -c 1,3 #取第一和第三字符
13
[root@c1 ~]# echo $i |cut -c 1-3  #取1-3字符串。
123
内容大纲
批注笔记
✨linux中常用文本处理命令
ArticleBot
z
z
z
z
主页
会议室
Git管理
文章
云文档
看板