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為所有域?;蛘哒f整行

3. 文件的每一行稱為記錄

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

要點:

1.?逗號分隔

2.?輸出的各item可以是字符串,也可以是數值

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

例子:

awk {print hello,awk}???????????在屏幕輸出hello,awk

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,item1,item2,…….

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.www58058.com/92451

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

相關推薦

  • N25第七周博客作業

    第七周博客作業 1、 創建一個10G分區,并格式為ext4文件系統; fdisk/dev/sdb à nàpàlast扇區:+10Gàwàpartx -a /dev/sdb   (1) 要求其block大小為2048, 預留空間百分比為2, 卷標為MYDATA, 默認掛載屬性包含acl; mke2fs  -t ext4 -b 2…

    Linux干貨 2017-02-20
  • find、locate詳細解析

    文件查找 在linux系統中如果我們不知道具體的文件的具體位置,我們可以使用文件查找命令來找到我們想找的文件,linux中也有相當優秀的查找命令,(如locate、find),通常查找速度快是locate,因為它是利用數據庫查找的,所以速度很快,而find是全磁盤掃描進行查找,所以速度比較慢。 locate和find都是在文件系統上查找符合條件的文件含義。 …

    Linux干貨 2016-08-13
  • 網絡管理之網絡配置

    一:博客 1 centos6網卡別名 在Linux系統中,我們可以在一塊物理網卡上配置多個IP地址,以此來實現類似子接口的功能,我們稱之為網卡別名。 設置網卡別名,先在/etc/sysconfig/network-scripts目錄下將eth0文件復制名為eth0:1的文件,復制文件中的1可隨意設置,但為方便管理建議按順序排列 注意要修改ifcfg-eth0…

    Linux干貨 2016-09-05
  • Linux程序包管理

    軟件包管理   API:Application Programming Interface POSIX:Portable OS                程序源代碼–>預處理–…

    Linux干貨 2016-08-29
  • Mariadb數據庫復制系列(四):復制過濾器的實現

       實驗四:復制過濾器的實現 復制過濾器的作用是讓從節點僅復制主節點的指定的庫,或指定數據庫的指定表,而不是全部復制。其配置方式有兩種,一種是在主節點上配置,通過定義主節點只記錄部分庫或表產生的二進制日志時間來實現;一種是通過從節點上配置,當復制了主節點的所有的二進制日志數據后,在SQL線程執行時,只執行指定的庫或表相關的二進制日志時間;一般采取在從節點上…

    Linux干貨 2016-11-24
  • 你會用Python寫洗腦神曲嗎?

    Python實戰班-學員學習成果展示 同樣是周末,有些人是閑聊著度過,有些人是學習充電度過。 人與人最大的區別,是下班后的時間??茨阍趺慈ダ?。 周末時,馬哥Python實戰班的學員正在認真上課,他們中的不少人,月薪在10k以上,甚至月薪20k以上。 但他們沒有虛度周末時光。 #最浪費時間的就是:思而不學+猶豫不決。# 馬哥Python實戰班二期的小伙伴們才…

    Linux干貨 2016-07-05
欧美性久久久久