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

(1)
zhangmengzhangmeng
上一篇 2018-03-15
下一篇 2018-03-15

相關推薦

  • 從Linux小白到大?!c狼共舞的日子7

    馬哥教育網絡班21期+第7周課程練習 1、創建一個10G分區,并格式為ext4文件系統; (1) 要求其block大小為2048, 預留空間百分比為2, 卷標為MYDATA, 默認掛載屬性包含acl; (2) 掛載至/data/mydata目錄,要求掛載時禁止程序自動運行,且不更新文件的訪問時間戳; [root@localhost ~]#&nbsp…

    Linux干貨 2016-11-14
  • 簡述動靜分離

        今天來簡述一下如何實現wordpress的動靜分離以及讀寫分離      首先來放出大圖。   1.來看圖說話     首先來介紹一下這張圖    最前端的兩臺機器是  負責調度后端主機請求動…

    2017-05-18
  • 計算機基礎及Linux基礎

    計算機基礎與Linux入門 計算機組成及功能 Linux常見發行版 Linux重要哲學思想 Linux文件系統層級結構及文件命名規則 如何獲取Linux命令的使用幫助 Linux常用命令及示例 1.1 計算機組成及功能 1.1.1 計算機的五大部件 計算機的主要組成部分有: 1、CPU:運算器 2、控制器、寄存器(內部存儲)、緩存; 3、存儲器:內存,RAM…

    Linux干貨 2016-12-04
  • Linux常見文件管理命令

    1、Linux上的文件管理類命令都有哪些,其常用的使用方法及其相關示例演示。2、bash的工作特性之命令執行狀態返回值和命令行展開所涉及的內容及其示例演示。3、請使用命令行展開功能來完成以下練習:(1)、創建/tmp目錄下的:a_c, a_d, b_c, b_d(2)、創建/tmp/mylinux目錄下的:mylinux/├── bin├── boot│??…

    2018-02-26
  • yum

    yum yum:YellowdogUpdate Modifier,rpm的前端程序,可解決軟件包相關依賴性,可在多個庫之間定位軟件包,up2date的替代工具 yum repository: yum repo,存儲了眾多rpm包,以及包的相關的元數據文件(放置于特定目錄repodata下)文件服務器:http://https://ftp://file:// …

    2017-08-17
欧美性久久久久