AWK文本工具和软件包管理

AWK文本工具

两种版本1.nawk   2.gawk

gawk    模式扫描和处理语言

选项:

-F 指明输入时用到的字段分隔符

-v  var=value:自定义变量

基本格式: awk [options] program   file….

programpattern{action statrments;……..}

分隔符,域记录:

1. awk 执行时,由分隔符分隔的字段标记$1,$2….$n 称为域标识。

2. $0为所有域。或者说整行

3. 文件的每一行称为记录

print 格式:print item1,item2,………..

要点:

1. 逗号分隔

2. 输出的各item可以是字符串,也可以是数值

3. 如省略item,相当于print $0

例子:

awk {print hello,awk}           在屏幕输出helloawk

awk -F: ‘{print}’  /etc/passwd      在屏幕上打印/etc/passwd文件的内容

awk -F: ‘{print “zm”}’  /etc/passwd   有多少行就打印多少行zm

awk -F: ‘{print $1}’  /etc/passwd      打印/etc/passwd的以:为分隔符的第一个字段

awk -F: ‘{print $0}’  /etc/passwd      打印所有字段

awk -F: ‘{print $1\t $3}’  /etc/passwd    打印文件的第一个和第三个字段

awk 变量:内置和自定义变量

FS:输入字段分隔符,默认为空白符

awk -v FS=”:” ‘{print $1,$F,$3}’ /etc/passwd 打印第一个字符和第三个字符用:分

awk -F: ‘{print $1,$3,$7}’ /etc/passw 打印1.3.7个字符

OFS:输出字段分隔符,默认为空白字符

awk -v FS=”:” -v OFS=”:” ‘{print $1,$3,$7}’ /etc/passwd   输出以:分隔打印1.3.7

RS:输出记录分隔符,指定输入时的换行符

awk -v RS=” ‘{print}’ /etc/passwd

ORS:输出记录分隔符,输出时用指定符号代替换行符

 awk -v RS=” -v ORS=’###’ ‘{print}’ /etc/passwd

NF:字段数量

awk -F: ‘{print NF}’ /etc/fsta

awk -F: ‘{print $(NF-1)}’ /etc/passwd

NR:记录号

awk ‘{print NR}’ /etc/fstab ; awk END'{print NR}’ /etc/fstab

FNR:各文件分别计数记录号

awk ‘{print FNR}’ /etc/fstab  /etc/passwd    分别打印各个文件行数

FILENAME:当前文件名

awk “{print FILENAME}” /etc/fstab       打印出当前文件名

ARGC:命令行参数的个数

awk ‘{peint ARGC}’ /etc/fstab /etc/inittab   打印命令行参数个数,不加GEGIN不打印

awk ‘BEGIN {print ARGC}’  /etc/fstab /etc/inittab     打印命令行参数个数,awk也算

ARGV:数组,保存的是命令行所给定的各参数

awk ‘BEGIN{print ARGV[0]}’ /etc/fstab /etc/inittab 结果打印处awk

awk ‘BEGIN{print ARGV[1]}’ /etc/fstab /etc/inittab 打印出/etc/fstab

awk变量:自定义变量(区分字符大小写)

-v  var=value

program中直接定义

示例:

awk -v test=’hello gawk’ ‘{print test}’ /etc/fstab   先赋值后打印

awk -v test=’hello gawk’ ‘BEGIN{print test}’ /etc/fstab   只打印一行

awk ‘BEGIN{test=”hello,gawk”;print test}’   

printf命令

格式化输出:printf FORMAT,item1item2…….

1. 必须指定FORMAT

2. 不会自动换行,需要显示给出换行符,\n

3. FORMAT中需要分别为后面每个item指定格式符

格式符:与item一一对应

%c:显示字符的ASCII

%d%i:显示字符的十进制数

%e%E:显示科学计数法值

%f:显示浮点数

%g:以科学计数法或浮点形式显示值

%s:显示字符串

%u:无符号整数

%%:显示自身

修饰符

#[.#]:第一个数字控制显示的宽度;第二个#表示小数点后的精确度,%3.1f

:左对齐  %-15s

+:右对其  %+d

例子:

awk -F: ‘{printf “%s”,$1}’ /etc/passwd  显示$1的字符串

awk -F: ‘{printf “%s\n”,$1}’ /etc/passwd    换行显示$1

awk -F: ‘{printf “%-20s %10d\n”,$1,$3}’ /etc/passwd

awk -F: ‘{printf “Username:%s UID:%d\n”,$1,$3}’ /etc/passwd

awk -F: ‘{printf “Username:%-15s,UID:%d\n” ,$1,$3}’ /etc/passwd

awk -F: ‘$0 ~ /root/{print $1}’ /etc/passwd      如果包涵root就打印

awk -F: ‘$0 ~  “root”‘ /etc/passwd            打印包含root的行

awk -F: ‘$0 !~  /root/’ /etc/passwd            不打印包含root的行

awk -F: ‘$3==0’ /etc/passwd       打印第三个字段包含0

操作符:&&|| !

实例:

 awk -F: ‘$3>=0 && $3<=1000 {print $1}’ /etc/passwd   打印id大于3小于1000的用户

 awk -F: ‘$3==0 || $3>=1000 {print $1}’ /etc/passwd   打印id等于31000的用户

awk -F: ‘!($3==0){print $1}’ /etc/passwd    打印id不等于3的用户

awk -F: ‘!($3>=500){print $3}’ /etc/passwd   打印id大于3id

df | awk ‘$1 ~ /^\/dev\/sd/{print $1,$5}’| awk -F% ‘{print $1}’   打印dev内存使用

seq 10 | awk ‘i=!i’                          打印奇数行

awk控制语句

语法:

if(condition){statement,……}[else statement]

if(condition){statement1}else if(condition2){statement2}

awk -F: ‘{if($3>=100)print $1,$3}’ /etc/passwd      $3大于100就打印$1,$3

awk -F: ‘{if($3>=1000){printf “Common user:%s\n”,$1} else {printf “root or user:%s\n”,$1}}’ /etc/passwd

while循环

awk ‘/^[[:space:]]*linux16/{i=1;while(i<=NF){print $i,length($i);i++}}’ /etc/grub2.cfg

软件包管理YUM,RPM

二进制应用程序组成部分

二进制文件,库文件,配置文件,帮助文件

查看二进制程序所依赖的文件    ldd /PATH/TO/BINARY_FILE

管理及查看本机装载的库文件    ldconfig

  /sbin/ldconfig -p 显示本机已经缓存的所有可用库文件名

配置文件/etc/ld.so.conf.d/,  /etc/ld.so.conf.d/*.conf

缓存文件/etc/ld.so.cache

rpm包安装[insttall-options]

–test:测试安装

–nodeps:忽略依赖关系

–replacepkgs

–nosignature 不检查来源合法性

–nodigest不检查包完整性

–noscripts 不执行程序包脚本

-u 安装有旧程序包,则升级。不存在旧版,则安装

-f  安装有旧程序包,则升级。不存在旧版,则不执行操作

–oldpackage:降级安装

–force:强制安装

换内核用-ivh

-e卸载  -a所有包  -f查看指定文件由那个程序包安装生成

-q   针对未安装的程序包查询操作

-c   程序配置文档   -d程序的文档 -l生成的所有文件 -R依赖关系

Yum

[****]

baseurl=file://  http://   ftp://  https://

gpgcheck=0  

enabled=1

 

 

 

本文来自投稿,不代表Linux运维部落立场,如若转载,请注明出处:http://www.178linux.com/92451

(1)
zhangmengzhangmeng
上一篇 2018-03-15 10:09
下一篇 2018-03-15 14:20

相关推荐

  • 操作系统文件管理

      在现代计算机系统中,要用到大量的程序和数据,因内存容量有限,且不能长期保存,故而平时总是把它们以文件的形式存放在外存中,需要时再随时将它们调入内存。如果由用户直接管理外存上的文件,不仅要求用户熟悉外存特性,了解各种文件的属性,以及它们在外存上的位置,而且在多用户环境下,还必须能保持数据的安全性和一致性。显然,这是用户所不能胜任、也不愿…

    Linux干货 2015-04-13
  • VIM命令 总结

    VIM命令总结

    2017-11-25
  • N24 第6周作业

    请详细总结vim编辑器的使用并完成以下练习题 1、复制/etc/rc.d/rc.sysinit文件至/tmp目录,将/tmp/rc.sysinit文件中的以至少一个空白字符开头的行的行首加#; 2、复制/boot/grub/grub.conf至/tmp目录中,删除/tmp/grub.conf文件中的行首的空白字符; 3、删除/tmp/rc.sysinit文件…

    Linux干货 2016-11-30
  • 马哥教育网络班21期+第四周博客作业

    1、复制/etc/skel目录为/home/tuser1,要求/home/tuser1及其内部文件的属组和其它用户均没有任何访问权限。 [root@C67-X64-A0 ~]# cp -a /etc/skel/ /home/tuser1 [root@C67-X64-A0 ~]# ls&nb…

    Linux干货 2016-07-29
  • 马哥教育网络班19期+第8周课程练习

    1、请描述网桥、集线器、二层交换机、三层交换机、路由器的功能、使用场景与区别。     网桥用来连接两个不同的网络间的设备;集线器的作用是把接受的信号放大,从另一个端口再穿法出去,说白了就是延长网络的传输距离;   二层交换机工作在数据链路层,根据源和目的MAC地址进行数据转发;三层交换机就是具有部分路由器功能的交换机,三层交换…

    Linux干货 2016-07-07
  • Linux进程及管理(1)

    Linux进程及管理(1) 内核的功用:进程管理、文件系统、网络功能、内存管理、驱动程序、安全功能 Process: 运行中的程序的一个副本; 存在生命周期Linux内核存储进程信息的固定格式:task struct 多个任务的的task struct组件的链表:task list 进程创建: init 父子关系 进程:都由其父进程创建 fork(), cl…

    Linux干货 2015-05-28