走进shell之--熟练掌握编辑文本功能命令

Posted 丁CCCCC

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了走进shell之--熟练掌握编辑文本功能命令相关的知识,希望对你有一定的参考价值。

一、sort 命令

以行为单位对文件内容进行排序,也可以根据不同的数据类型排序

1.1 格式

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

1.2 常用选项

选项作用
-f忽略大小写来进行比较
-b忽略每行前面的空格
-n按照数字来进行排序
-r反向排序
-u等同于uniq,表示相同的数据仅显示一行
-t指定字段分隔符,默认使用 TAB 键分离
-k指定排序字段
-o<输出文件>将排序后的结果转存至指定文件

1.3 测试

在这里插入图片描述
在这里插入图片描述
-n

  • 按照数字排序,并且按照总量排序
    在这里插入图片描述
    -r
  • 配合-n使用,倒排
    在这里插入图片描述
    -f -b
  • f忽略大小写,b忽略空行
    在这里插入图片描述
    -t -k
  • t来指定:,k选择第三列
    在这里插入图片描述

二、uniq 命令

用于报告或忽略文件中连续的重复行,一般与sort配合使用

2.1 格式

uniq [选项] 参数
或
cat file | uniq 选项

2.2 常用选项

选项作用
-c进行计数,并删除文件中重复的行
-d仅显示连续的重复行
-u仅显示出现一次的行

2.3 测试

  • -c

    • 删除重复行
      在这里插入图片描述
  • -u

    • 配合sort命令,按照数字排序后,再显示不重复的行
      在这里插入图片描述

三、tr 命令

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

3.1 格式

tr [选项] [参数]

3.2 常用选项

选项作用
-c保留字符集1的字符,其他的字符包括换行符\\n 用字符集2替换
-d删除所有属于字符集1的字符
-s将重复出现的字符串压缩为一个字符串,用字符串2替换,=字符集1
-t字符集2替换字符集1,不加选项同结果

参数

  • 字符集1:指定要转换或删除的原字符集。当执行转换操作时,必须使用参数 “字符集2” 指定转换的目标字符集,但执行删除操作时,不需要“字符集2”
  • 字符集2:指定要转换成目标字符集

3.3 测试

-t

  • 不加该选项默认也有此效果
    在这里插入图片描述

-c

  • 将ab替换为0
  • 由于\\n无法被替换,所以结果会换行,除ab外都为0
    在这里插入图片描述
  • 对比没有\\n选项的测试
    在这里插入图片描述

-d

  • 删除
    在这里插入图片描述

-s

  • 压缩重复出现的字符
    在这里插入图片描述

把 " : " 替换为 " \\n "

使用命令 -s 更改$PATH里的内容
在这里插入图片描述

Windows中的换行符 ’ ^M ’ 替换

使用命令
Linux的换行符为 " \\n " 会进行回车和换行的功能,回车符 " ^M " 只会作为控制字符显示,没有功能。如果要Windows转换换行回车功能,需要 " \\r " " \\n " 功能使用,缺一个都不能正确的换行

cat windows.txt | tr -s "\\r" "\\n" > new_windows.txt
或
cat windows.txt | tr -d "\\r" > new_windows.txt

四、更简单的数组排序

使用tr命令,配合sort完成

num=(10 30 20 50 40 60)							# 随机排序
echo ${num[*]}
10 30 20 50 40 60
echo ${num[*]} | tr " " "\\n" | sort -n			# tr转换空格会回车,sort按照数字排序
10
20
30
40
50
60
num1=`echo ${num[*]} | tr " " "\\n" | sort -n | tr "\\n" " "`		# 使用新的变量名,将结果重新切换为空格符
echo ${num1[*]}									# 输出结果
10 20 30 40 50 60

五、cut 命令

显示行中的指定部分、删除文件的指定字段

5.1 格式

cut 选项 参数
或
cat file | cut 选项

5.2 常用选项

选项作用
-f通过指定哪一个字段进行提取,cut默认是“tab”作为分隔符
-d“tab”默认分隔符,使用这个更改其他的分隔符
- -complement用于排除所指定的字段
- -output-delimiter更改输出内容的分隔符

5.3 测试

-f

选择第四列

cut -d ":" -f 4 /etc/passwd
或
awk -F ":" '{print $4}' /etc/passwd			# awk同样能完成

在这里插入图片描述
在这里插入图片描述

-d、-f

分割123和6列信息出来

grep '/bin/bash' /etc/passwd | cut -d ':' -f 1-3,6

在这里插入图片描述

- -complement

排除第二列查询

grep '/bin/bash' /etc/passwd | cut -d ':' --complement -f 2

在这里插入图片描述

- -output-delimiter

特定查看第1、7列的信息

cut -d ':' -f1,7 --output-delimiter=' ' /etc/passwd

在这里插入图片描述

以上是关于走进shell之--熟练掌握编辑文本功能命令的主要内容,如果未能解决你的问题,请参考以下文章

Shell命令之文本操作

sed和gawk

linux shell 之在线文本编辑sed

ROS-ROS命令

vi命令

vi 命令