cut: 显示切割的行数据

  -f: 选择显示的列 (1: 显示第一列; 1,3: 显示第一列、第三列; 1-3: 显示第一列到第三列)

  -s: 不显示没有分隔符的行

  -d: 自定义分隔符(' '空格 ‘d’ d字符进行分割)

sort: 排序文件的行(字典排序(默认),数值排序)

  -n: 按数值排序

  -r: 倒序

  -t: 自定义分隔符

  -k: 选择排序行

  -u: 合并相同行

  -f: 忽略大小写

sed: 行编辑器(和vi命令有些类似,不需要打开文件进行编辑文本)

  sed[options]'AddressCommnad'file ...,

  -n: 静默模式,不再显示模式空间中的内容(不加此命令,会把文件原本的内容+超找的内容 显示出来,原文件没有修改)

    sed -n "2p" sort.txt 只显示sort.txt 文件第二行的内容

    sed "3d" sort.txt sort.txt 删除第三行的内容全部显示

  -i: 直接修改原文件

  -e: SCRIPT 可以执行多个脚本

  -f: /PATH/TO/SED_SCRIPT

  -r: 使用正则表达式

sed: 行编辑器Command

  d: 删除符合条件的行;

  p: 显示符合条件的行

  a: \string 在指定的行后面追加新行,内容为string

    \n 可以用于换行

  i: \string 在制定的行前面追加新行,内容为sring

    sed -i "/apple/a\hahah" sort.txt 查找到apple 并在行添加字符串hahah

    sed -i "/^ha/d" sort.txt: 删除以ha开头的行

  r FILE: 将制定文件的内容添加至符合条件的行处

  w FILE: 将地址指定的范围内的行另存为制定的文件中

  s/pattern/string/修饰符; 查找并替换,默认只替换每行中第一次被模式匹配到的字符串

    g: 行内全局替换

    i: 忽略字符大小写

    sed -i "s/\(id:\)[0-5]\(:initdefault:\)/\15\2/" inittab 查找id:[0-6]:initdefault: 替换为需要的数据

    sed "s/\(IPADDR=\([0-9]\?[0-9]\?[0-9].\)\{3\}\).*/\155/" ifcfg-eth0: 替换ip地址最后一位数字

 awk : 一个强大的文本分析工具,awk是把文件逐行的读入,(空格,制表符)为默认分隔符将每行切片,切开的部分再进行各种分析处理

文件:/etc/password

1、将每行的第一个用户信息打印出来

awk -F ':' '{print $1}' passwd

说明:-F 切割方式

   '' 单引号 强引用 不会被bash扩展  如果用双引号 $会被bash引用为获取标量

    '{}' 匿名内部类

 $1:表示第一行 $2:第二行 $0: 正行

2、将表头(第一列)和shell壳(第七列) 表头加 name 和 shell 进行输出打印,结尾输出 hello和world

  awk -F':' 'BEGIN {print "name\tshell"} {print $1 "\t" $7} END{print "hello\tworld"}'  passwd

说明:BEGIN 只会执行一次方法 在执行匿名内部类之前执行

  END 只会执行一次方法,在匿名内部类执行完之后执行

  awk可以执行多个匿名函数:awk -F':' 'BEGIN {print "name\tshell"} {print $1 "\t" $7} {print $0} END{print "hello\tworld" }' passwd

3、查询行中带有root的单词并打印

  awk '/root/ {print $0}' passwd

4、显示passwd中的行数、列数及正行内容

  awk -F':' '{print NR"\t"NF"\t"$0 }' passwd

文件:awk.txt  0 manager 1 work

张三	0	2018-12-12	car	3000
李四 1 2018-01-12 car 1000
王五 0 2018-01-12 car 2000
赵六 1 2018-01-12 car 500
李四 1 2018-01-12 car 4000
赵六 1 2018-01-12 car 50000

1、统计每个人1月份的工资 (默认按照制表符、空格分割数据,所以不需要加-F)

awk '{split($3,data,"-"); if(data[2]=="01"){name[$1]+=$5} } END{for (i in name){print i "\t" name[i]} }' awk.txt

2、统计每个人1月份的工资 和角色(默认按照制表符、空格分割数据,所以不需要加-F)

awk '{split($3, data, "-"); if(data[2]=="01"){name[$1]+=$5; if ($2=="0"){role[$1]="M"} else {role[$1]="W"} } } END{for(i in name){print i "\t" name[i] "\t" role[i]} }' awk.txt

3、使用*.awk 执行awk中的命令

{
split($3, data, "-");
if (data[2] == "01") {
name[$1] += $5;
if ($2 == "0") {
role[$1] = "M";
} else {
role[$1] = "M";
}
}
}
END{
for (i in name) {
print i "\t" name[i] "\t" role[i];
}
}

awk -f awk.awk awk.txt

可以得到同样的结果 -f 执行awk中的命令

linux cut sort wc sed>vi awk (文本处理)的更多相关文章

  1. centos shell基础 alias 变量单引号 双引号 history 错误重定向 2>&1 jobs 环境变量 .bash_history source配置文件 nohup & 后台运行 cut,sort,wc ,uniq ,tee ,tr ,split, paste cat> 2.txt <<EOF 通配符 glob模式 发邮件命令mail 2015-4-8 第十二节课

    centos shell基础知识 alias  变量单引号 双引号   history 错误重定向 2>&1  jobs  环境变量 .bash_history  source配置文件 ...

  2. Linux中grep、sed、awk使用介绍

    linux文件操作命令介绍1)grepgrep 用于在文件中查找符合条件的记录grep 参数 过滤条件 文件过滤的条件中可使用正则表达式-c 显示符合的行数-i 忽略大小写-n 显示符合要求的记录,包 ...

  3. 13、Linux基础--grep、sed、awk三剑客综合运用

    考试 1.找出/proc/meminfo文件中以s开头的行,至少用三种方式忽略大小写 [root@localhost ~]# grep -E '^[sS]' /proc/meminfo [root@l ...

  4. linux三剑客grep,sed,awk

    grep 官方帮助文档 Usage: grep [OPTION]... PATTERN [FILE]... Search for PATTERN in each FILE or standard in ...

  5. Linux三剑客grep、sed、awk

    grep grep file grep -i file grep -v file

  6. 文本处理命令(sort+uniq+cut+tr+wc)+三剑客之sed

    目录 文本处理命令+三剑客之sed 一.文本处理命令 1.排序命令 sort 2.检查/删除命令 uniq 3. cut 显示特定部分命令 4. 替换或删除命令 tr 5.统计 计算数字命令 wc 二 ...

  7. 11、Linux基础--sort、uniq、cut、tr、wc、流处理工具sed

    笔记 1.晨考 1.写出过滤手机号的正则表达式 1[0-9]{10} 2.写出过滤邮箱的正则表达式 chenyang@123.com [a-zA-Z0-9-_]+@[a-z0-9]+\.(com|cn ...

  8. linux(5)--补充(管道| / 重定向> / xargs)/find 与xargs结合使用/vi,grep,sed,awk(支持正则表达式的工具程序)

    本节中正则表达式的工具程序 grep,sed和awk是重点,也是难点!!! 先补充一下一. 管道| / 重定向> / xargs 如:1. 管道和重定向的区别:具体可以见 http://www. ...

  9. Linux文本三剑客超详细教程---grep、sed、awk

    awk.grep.sed是linux操作文本的三大利器,合称文本三剑客,也是必须掌握的linux命令之一.三者的功能都是处理文本,但侧重点各不相同,其中属awk功能最强大,但也最复杂.grep更适合单 ...

随机推荐

  1. Springboot2.0加载指定配置文件@PropertySource的使用

    1. 在resouces下编写待加载的配置文件 这里使用person.properties # String person.last-name=john # int person.age=112 # ...

  2. array_chunk的用法和php操作大数据

    一.array_chunk() 函数 二.php操作大数据 1.在操作大数量数据与数据库交互时,比如插入大量数据,db就会报错,这时可以把原本的数据用array_chunk分隔成几个数组块,再循环插入 ...

  3. PostgreSQL-临时表空间与配置表

    虽然我给数据库创建了表空间,但是操作中仍遇到了些问题,需要创建临时表空间. 配置表 首先了解下 postgres 的配置表,手动修改各种配置. 打开即可看到各种配置,包括临时表空间. 临时表空间 1. ...

  4. 深入解析Vue.js中v-bind v-model的使用和区别

    v-model 指令在表单控件元素上创建双向数据绑定,所谓双向绑定,指的就是我们在js中的vue实例中的data与其渲染的dom元素上的内容保持一致,两者无论谁被改变,另一方也会相应的更新为相同的数据 ...

  5. knative 安装

    knative 安装 本文安装版本 knative 0.6. 准备 安装 knative 前需要事先安装 Kubernetes 集群 和 Istio. 安装 下载安装所需要的文件.以下选择的是全安装, ...

  6. TCP的三次握手与四次挥手理解及面试题

    TCP的三次握手与四次挥手理解及面试题(很全面) 转载自:https://blog.csdn.net/qq_38950316/article/details/81087809 本文经过借鉴书籍资料.他 ...

  7. CSS3之box-shadow--阴影外阴影与外发光

    基础语法 外阴影:box-shadow:X Y Npx #color; 内阴影:box-shadow:inset X Y Npx #color; 第一个属性:阴影的X轴(可以使用负值) 第二个属性:阴 ...

  8. 机器学习-非线性回归(Logistic Regression)及应用

    1. 概率 1.1 定义:概率(Probability):对一件事情发生的可能性的衡量. 1.2 范围:0 <= P <= 1 1.3 计算方法: 1.3.1 根据个人置信 1.3.2 根 ...

  9. 【vue】iView-admin2.0动态菜单路由【版2】

    依照iView-admin2.0动态菜单路由[版1] 归纳几个节点动态路由获取方式2 ——> easymock假数据 ——> 数据转组件处理.addRoutes ——> localS ...

  10. suse清除kthrotlds木马病毒

    一.服务器感染了kthrotlds挖矿病毒 [root@51yt bin]# cd /bin/ [root@51yt bin]# wget https://busybox.net/downloads/ ...