Ubuntu Linux基础教程 第5章实用程序初步 期末复习

大家觉得写还可以,可以点赞、收藏、关注一下吧!
也可以到我的个人博客参观一下,估计近几年都会一直更新!和我做个朋友吧!https://motongxue.cn


第5章实用程序初步

5.1多列内容输出

5.1.1按多列格式输出

  1. column file:竖着排序

5.1.2按不同行列顺序

  1. column -x flie:-x横着排序

5.2文件内容查找

5.2.1在多个文件内容中查找

  1. grep string file1 file2…:从多个文件中查找string
  2. grep computer *:在当前目录下的所有文件中查找字符串computer

5.2.2在文件中查找多个单词

  1. grep ‘joy chen’ file:如果不加单引号,会认为chen是一个文件

5.2.3查找单词时忽略字母的大小写

  1. grep -i string file

5.2.4查找目标内容的文件名

  1. grep -v string file:输出不包含目标字符串的行
  2. grep -l string file:只输出文件名
  3. grep -n string file:在显示匹配行内容的情况下显示其所在原文件行号

5.2.5使用正则表达式

  1. grep '^a' file:以a开头的字符
  2. grep '\^a' file:转义字符
  3. grep 'a$' file:以a结束的字符
  4. grep ‘^…$’ file:查找长度为4的行,4个”.“表示4个字符

5.3基本数学运算

5.3.1整数运算

  1. bc

5.3.2浮点运算

  1. 默认为scale为0,可设置scale=2
  2. 退出bc执行quit

5.4文件内容排序

5.4.1对文件内容按字典顺序排序

  • sort -d file:排序时忽略标点符号等特殊符号

5.4.2对文件内容不区分字母大小写排序

  • sort -f file:忽略字母大小写

5.4.3对文件内容反向排序

  • sort -r file:反向排序

5.4.4对文件内容按数值大小排序

  • sort -n file:数值大小排序

5.4.5对文件内容按某一字段排序

  • sort -k 1 file

5.4.6对文件内容限定排序

  1. sort +1 -3 file:包尾不包头
  2. sort +1 -2 +3r -4 file:优先第2字段排序,然后第4列逆序排序

5.4.7在不同字段分隔符下使用sort

  1. sort -t: file:使用:进行分隔

5.4.8对文件排序后重写

  1. sort -o file file:对文件排序后写回原文件

5.5文件内容比较

5.5.1识别和删除重复行

  1. uniq -c:相邻重复的话仅打印一次
  2. uniq -d:打印相邻重复次数大于一
  3. uniq -u:类似于sort file | uniq,类似集合去重

5.5.2按行比较两个文件

使用comm之前,一定要保证代比较文件是有序的

  1. comm file1 file2:输出三列:仅file1存在的行,仅file2存在的行,file1和file2都存在的行
  2. comm -3 file1 file2:不输出第三列

5.5.3查看文件不同之处

  1. diff file1 file2

5.6文件内容替换

5.6.1替换指定字符

  1. tr ‘r’ ‘R’ < file:逐字符替换
  2. tr ‘pe -’ ‘PE,’ < file:替换多个字符,而非字符串!

5.6.2按范围替换

  1. tr ‘[a-g]’ ‘[A-G]’ < file:将小写的a-g替换成大写的A-G
  2. tr ‘[a-g]’ ‘[1-7]’ < file

5.6.3删除指定字符

  1. tr -d ‘o’ < file:删除所有的o
  2. tr -s ‘o’ < file:连续重复的只保留一个

5.6.4结合管道替换

5.7单行编辑数据

5.7.0查找单词

  1. sed -n ‘/string/p’ file:仅输出符合的那一行
  2. sed ‘/string/p’ file:输出符合的行,然后再全部输出

5.7.1修改指定单词

  1. sed ‘s/oldstring/newstring’ file:只替换所有行内第一个指定单词
  2. sed ‘s/oldstring/newstring/g’ file:替换所有行内所有指定单词
  3. sed ‘/targetstring/s/oldstring/newstring/g’ file:在targetstring行内将所有oldstring替换为newstring

5.7.2删除指定行

  1. sed ‘/targetstring/d’ file:所有包含targetstring的行全部删除
  2. sed ‘4d’ file:删除第4行
  3. sed ‘1,3 d’ file:删除1-3行

5.7.3结合正则表达式修改

  1. sed ‘/^c/s/oldstring/newstring/g’ file:所有以c开头的行中oldstring被newstring替换
  2. sed ‘s/oldstring/& newstring/g’ file:oldstring被替换为oldstring newsting,正则表达式!

5.8数据操作工具

5.8.1数据操作工具介绍

awk具有极为强大的数据处理能力。他可以选择并输出指定字段、修改字段分隔、操作数据库和选择记录、使用预定义变量和正则表达式、在输出结果中插入空格、进行数学运算。

5.8.2选择行并输出字段

  1. awk ‘/string/ {print $3}’ file:找到含有string的行,然后输出第3个字段
  2. $0:表示整行

5.8.3指定字段分隔符

  1. awk -F_ '/ex/ {print $3,$1}' file:-F指定下划线为字段分隔符,先输出第三个字段,再输出第二个字段
  2. 注意:在{print $3,$1}中,用了逗号分隔,使得所有字段均以空格分开

5.8.4awk命令语法

awk 选项 ‘模式{操作}’ 文件名

  1. 选项:能使awk完成某种待定功能的参数,比如用来指定字段分隔符-F选项
  2. 模式:待检索的字符串,通常是正则表达式或者关系表达式
  3. 操作:对检索成功的行执行相应的操作,默认的操作是按指定格式输出检索成功行中的若干字段
  4. 文件名:待检索文件的名称

5.8.5使用awk操作数据库

  • awk ‘{print “Num Name Sex Age Score”;exit}’ file;awk ‘{print}’ file:增强可读性,

5.8.6选择输出数据库的字段

  1. awk ‘{print $1}’ file
  2. awk '{print $1,$2,$3}' file
  3. awk ‘{print $0}’ file:输出全部字段
  4. awk ‘{print}’ file:同$0,输出全部字段

5.8.7使用awk的预定义变量

  1. NF:当前记录的字段总个数
  2. NR:当前被检索的行号
  3. awk ‘{print $(NF-1)}’ file:利用NF输出倒数第二个字段,注意有括号,否则先取值了

5.8.8使用自定义变量、字符串和数字

  1. awk -v test=‘student:’ ‘{print test $0}’ file:每行先输出test的值”student“,再输出每行的字段
  2. 如果没有设置自定义变量,然后随便输出,awk会略过这个未定义变量
  3. awk '{print "NUM: " $1,"NAME: "$2}' file:使用双引号输出若干字符串,由于$1和“NAME”间有逗号,所以输出时会在其中间输出空格
  4. awk ‘{print “78.9-1”,78.9-1}’ file:每一行输出"78.9-1" 77.9

5.8.9使用正则表达式

  1. awk ‘/[Tt]/ {print}’ file:输出含有T或t的行
  2. awk '/^[a-z]/ {print}' file:输出以a-z开头的行
  3. awk '/[^a-z]/ {print}' file[^a-z]:表示按字母表顺序逐行查找a到z的所有字母,只要某一行包含了a-z以外的任意一个字符,这一行就会被输出
  4. awk ‘/[1-4]/ {print}’ file:逐行查找1到4中任意一个字符,找到便输出

5.8.10使用指定的字段选择记录

  1. awk ‘$3==“f” {print}’ file:第三个字段的值是否为"f",注意一定要待比较内容两侧加双引号
  2. awk ‘$4>19 {print}’ file:同 awk ‘{if($4>19) print}’ file
  3. awk ‘$1~/[Bb]us/ {print}’ file:第一个字段匹配”/[Bb]us/“的才输出
  4. awk ‘$1!~/[Bb]us/ {print}’ file:第一个字段匹配”/[Bb]us/“的才输出
  5. awk '$3=="m" && $4>20 {print}' file
  6. awk ‘/[Bb]us/ || $2>=150 {print}’ file:
  7. awk ‘!(NF==1) {print}’ file:

5.8.11使用awk命令文件

  1. file中写入:/Amy/||$4>=20 {print}

  2. awk -f file awkfile:输出包含Amy并且第四字段>=20的行

  3. FS RS OFS ORS
    查找时使用的字段分隔符 查找的换行分隔符 输出的字段分隔符 输出的换行分隔符
  4.  编写file
     BEGIN{
          
          
     FS="-"
     OFS="~"
     }
     {
          
          
     print $1,$2
     }
     
     然后awk -f file awkfile
    

5.8.12awk命令的拓展

5.8.13在awk中进行数学运算

编写file,将商品限定为蔬菜,然后计算输出
$4 == "vegateble" {
    
    
name=$1
unitprice=$2
quantity=$3
category=$4
price=unitprice*quantity
print name "\t" price
}

然后awk -f file awkfile

2020年12月16日更

大家觉得写还可以,可以点赞、收藏、关注一下吧!
也可以到我的个人博客参观一下,估计近几年都会一直更新!和我做个朋友吧!https://motongxue.cn


猜你喜欢

转载自blog.csdn.net/CrazyMooo/article/details/111303133