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

相关推荐

  • ☞awk

    awk

    Linux干货 2016-09-24
  • hadoop分布式集群

    分布式集群的实现 环境: 192.168.36.129   node1:NN,SNN,RM  192.168.36.130  node2:DN,NM 192.168.36.132   node3:DN,NM 192.168.36.133   node4:DN,NM 配置java环境,每个节点时间同步,基于主机名互相通信,定义/etc/hosts 文件 &nb…

    2017-12-09
  • Linux 第九天: 练习和作业

    Linux 第九天: 练习和作业       编写脚本/root/bin/systeminfo.sh 显示当前主机系统信息 包括主机名 ipv4地址 操作系统版本 内核版本 CPU信号 内存大小 硬盘大小 server_ip=`ifconfig|grep'inet\b'|grep -v '…

    Linux干货 2016-08-15
  • 用户和组

    一、概述   Linux系统是一个多用户多任务的分时操作系统,任何一个要使用系统资源的用户,都必须首先向系统管理员申请一个账号,然后以这个账号的身份进入系统。   用户的账号一方面可以帮助系统管理员对使用系统的用户进行跟踪,并控制他们对系统资源的访问;另一方面也可以帮助用户组织文件,并为用户提供安全性保护。 &nbsp…

    Linux干货 2016-10-22
  • 马哥教育网络班20期+第二周课程练习

    linux 中一切皆文件,我们所做的一切都是和文件打交道。   文件分为两部分:元数据和数据           元数据: 即真实数据的属性。可用 stat  命令查看       &nbs…

    Linux干货 2016-06-23
  • 第四周学习总结

    写在最前 忙碌的一周又过去了,通过日夜兼程的追赶,也算基本上赶上了大部队的步伐。本周将继续对上一周的内容进行回顾加深,以达到对用户更加熟悉的管理,并讲讲三剑客中的老三。 知识详解 上一周我们说到了用户的管理,其中有像useradd、usermod、groupadd、passwd和userdel等非常重要的命令,每个用户都有自己特定的角色,在系统上完成不同的功…

    2017-12-24