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

相关推荐

  • 负载调度器:调度算法

    调度算法(ipvs scheduler) 起点公平:平均分配,不管分别干的怎么样。 结果公平:谁现在还剩下的在处理的少,就分配给谁。      根据其调度时是否考虑各RS当前的负载状态,可分为静态方法和动态方法两种: 静态方法 静态方法:仅根据算法本身进行调度; RR      …

    2016-10-28
  • N22-妙手-第七周博客作业第四题:RAID各级别的特性

    什么是RAID RAID的全称是Redundant Array of Independent Disks – 独立磁盘冗余阵列。基本思想是将多个相对便宜的硬盘组合成为一个硬盘阵列,使其在性能上达到或超过一块价格昂贵、容量巨大的硬盘。RAID通常被用在服务器上,使用完全相同的硬盘组成一个逻辑扇区,因此操作系统会把其当做一块硬盘。RAID分为不同的等…

    Linux干货 2016-09-27
  • SElinux

    selinux  配置文件 修改   就要重启 targeted:用来保护常见的网路服务,仅有限进程受到selinux控制,只监控容易被入侵的进程。 targeted  慢慢完善的法律 系统默认使用   targeted     CENTOS6 CENTOS7 ZAI &nbsp…

    Linux干货 2016-09-14
  • linux初期了解

    计算机的组成及其功能 计算机有运算器,控制器,存储器,输出设备和输入设备组成: 1.运算器:运算器又称算术逻辑单元(Arithmetic Logic Unit简称ALU)。它是计算机对数据进行加工处理的部件,包括算术运算2.控制器:控制器负责从存储器中取出指令,并对指令进行译码 3.存储器:存储器是计算机记忆或暂存数据的部件。 4.输入设备:输入设备是给计算…

    Linux干货 2016-10-30
  • CentOS7 实现网卡绑定

    Bonding ;理念 将多块网卡绑定同一IP地址对外提供服务,可以实现高可用 或者负载均衡。直接给两块网卡设置同一IP地址是不可以的 。通过bonding,虚拟一块网卡对外提供连接,物理网卡的 被修改为相同的MAC地址 banding工作模式 Mode 0 (balance-rr) 轮转(Round-robin)策略: 从头到尾顺序的在每一个slave 接…

    2017-12-19
  • linux函数和数组定义

    函数介绍:    函数function 是由若干条shell 命令组成的语句块,实现代码重用和模块化编程。    它与shell 程序形式上是相似的,不同的是它不是一个单独的进程,不能独立运行,而是shell 程序的一部分。    函数和shell 程序比较相似,区别在于:   …

    Linux干货 2017-04-02