awk是一個強大的文本分析工具,與grep、sed相比,awk在對數據分析并生成報告時,顯得有很大的優勢。
成都地區優秀IDC服務器托管提供商(成都創新互聯).為客戶提供專業的綿陽主機托管,四川各地服務器托管,綿陽主機托管、多線服務器托管.托管咨詢專線:13518219792
awk有三個不同的版本:awk、nawk和gawk,在沒有做特殊說時的時候默認的就是gawk,gawk是awk的GNU版本。
其中command是真正的awk命令,-F表示域的分隔符,是個可選項。Filename是等待處理的文件
將所有的awk命令寫入到一個文件,并使用該文件有X權限,然后awk命令解釋器作為腳本的首行,也就是說可以把腳本最開始的 #!/bin/bash 換成 #!/bin/awk
最后直接執行這個腳本文件就行了。
-f 指定要加載的awk腳本,是一個文件。Filename是等待處理的文件
awk的工作流程是這樣的:讀入一行后(最后面帶有” ”的),就按-F指定的分隔符來將該行劃分成N個區域,$0表示所有的區域,$1表示第一個域,$2表示第二個域,依此類推,$n表示第n個域。
總結:awk先執行BEGIN內的命令,然后再讀入文件中的行,接著就是按照指定的分隔符將該行分成N個區域,然后再來執行模式所對應的動作action。然后,再來讀入第二行。。再重復執行action,直到所有的行都處理完成。最后再執行END中的命令。
注意:' // '之間是支持正則表達式的,如果此處只有pattern,而沒有action,那么awk默認會把匹配到的行打印出來。
awk中的print還可以使用C語言中的printf來替代。在輸出格式比較復雜的時候使用printf函數會比print函數要更直觀一些,如下:
還可以使用-v key=value來自定義變量。如下:
awk中的條件語句是從C中借鑒過來的
語法:if (condition) {then-body} else {else-body}
例如使用awk來統計某個目錄下的普通文件的大小,不包括子目錄的,并過濾掉目錄。
循環語句也和C中的一樣,支持while、do/while、for、continue、break等關鍵字。
break和continue常用于循環中;
在awk中,數組的下標可以是數字或字母。一般awk中的數組的作用是從記錄中收集信息,用于計算總和、統計單詞等。
在awk中要刪除一個元素的時候使用 delete array[index]
更多請參見awk官方文檔[]
;?????awk命令是linux下的一個文件管理命令,通常是用于文本和數據進行處理的編程語言,awk命令主要有兩個功能,具體介紹如下:
1、awk命令可以在linux/unix下對文本和數據進行處理;
2、awk命令支持用戶自定義函數和動態正則表達式。
參考范例:
比如打印每一行的第二和第三個字段,具體命令為:
[root@linuxcool~]#awk'{print$2,$3}'file
awk命令的具體語法格式為awk[參數][文件]。
參數:
-F指定輸入時用到的字段分隔符
-v自定義變量
-f從腳本中讀取awk命令
-m對val值設置內在限制
以上就是的分享了,希望能夠幫助到大家。
本文章基于ThinkpadE15品牌、centos7系統撰寫的。
linxu下的grep命令其實是一個搜索文件文本的工具。下面由我為大家整理了linux的grep命令的詳細解釋的相關知識,希望對大家有幫助!
一、linux中的grep命令的詳細解釋
1.作用
Linux系統中grep命令是一種強大的文本搜索工具,它能使用正則表達式搜索文本,并把匹 配的行打印出來。grep全稱是Global Regular Expression Print,表示全局正則表達式版本,它的使用權限是所有用戶。
2.格式
grep [options]
3.主要參數
[options]主要參數:
-c:只輸出匹配行的計數。
-I:不區分大 小寫(只適用于單字符)。
-h:查詢多文件時不顯示文件名。
-l:查詢多文件時只輸出包含匹配字符的文件名。
-n:顯示匹配行及 行號。
-s:不顯示不存在或無匹配文本的錯誤信息。
-v:顯示不包含匹配文本的所有行。
pattern正則表達式主要參數:
\: 忽略正則表達式中特殊字符的原有含義。
^:匹配正則表達式的開始行。
$: 匹配正則表達式的結束行。
\:從匹配正則表達 式的行開始。
\:到匹配正則表達式的行結束。
[ ]:單個字符,如[A]即A符合要求 。
[ - ]:范圍,如[A-Z],即A、B、C一直到Z都符合要求 。
。:所有的單個字符。
* :有字符,長度可以為0。
二、linux中的grep命令的詳解實例
1.grep命令使用簡單實例
$ grep ‘test’ d*
顯示所有以d開頭的文件中包含 test的行。
$ grep ‘test’ aa bb cc
顯示在aa,bb,cc文件中匹配test的行。
$ grep ‘[a-z]\{5\}’ aa
顯示所有包含每個字符串至少有5個連續小寫字符的字符串的行。
$ grep ‘w\(es\)t.*\1′ aa
如果west被匹配,則es就被存儲到內存中,并標記為1,然后搜索任意個字符(.*),這些字符后面緊跟著 另外一個es(\1),找到就顯示該行。如果用egrep或grep -E,就不用”\”號進行轉義,直接寫成’w(es)t.*\1′就可以了。
2.grep命令使用復雜實例
假設您正在’/usr/src/Linux/Doc’目錄下搜索帶字符 串’magic’的文件:
$ grep magic /usr/src/Linux/Doc/*
sysrq.txt:* How do I enable the magic SysRQ key?
sysrq.txt:* How do I use the magic SysRQ key?
其中文件’sysrp.txt’包含該字符串,討論的是 SysRQ 的功能。
默認情況下,’grep’只搜索當前目錄。如果 此目錄下有許多子目錄,’grep’會以如下形式列出:
grep: sound: Is a directory
這可能會使’grep’ 的輸出難于閱讀。這里有兩種解決的辦法:
明確要求搜索子目錄:grep -r
或忽略子目錄:grep -d skip
如果有很多 輸出時,您可以通過管道將其轉到’less’上閱讀:
$ grep magic /usr/src/Linux/Documentation/* | less
這樣,您就可以更方便地閱讀。
有一點要注意,您必需提供一個文件過濾方式(搜索全部文件的話用 *)。如果您忘了,’grep’會一直等著,直到該程序被中斷。如果您遇到了這樣的情況,按 CTRL c ,然后再試。
下面還有一些有意思的命令行參數:
grep -i pattern files :不區分大小寫地搜索。默認情況區分大小寫,
grep -l pattern files :只列出匹配的文件名,
grep -L pattern files :列出不匹配的文件名,
grep -w pattern files :只匹配整個單詞,而不是字符串的一部分(如匹配’magic’,而不是’magical’),
grep -C number pattern files :匹配的上下文分別顯示[number]行,
grep pattern1 | pattern2 files :顯示匹配 pattern1 或 pattern2 的行,
grep pattern1 files | grep pattern2 :顯示既匹配 pattern1 又匹配 pattern2 的行。
grep -n pattern files 即可顯示行號信息
grep -c pattern files 即可查找總行數
這里還有些用于搜索的特殊符號:
\ 和 \ 分別標注單詞的開始與結尾。
例如:
grep man * 會匹配 ‘Batman’、’manic’、’man’等,
grep ‘\man’ * 匹配’manic’和’man’,但不是’Batman’,
grep ‘\man\’ 只匹配’man’,而不是’Batman’或’manic’等其他的字符串。
‘^’:指匹配的字符串在行首,
‘$’:指匹配的字符串在行 尾,
tftp命令是linux下的一個命令,那么它的具體語法是怎樣的呢?下面由我為大家整理了linux tftp命令的相關知識,希望對大家有幫助!
1.linux tftp命令語法
tftp(選項)(參數)
2.linux tftp命令選項
-c:指定與tftp服務器連接成功后,立即要執行的指令;
-m:指定文件傳輸模式。可以是ASCII或者Binary;
-v:顯示指令詳細執行過程;
-V:顯示指令版本信息。
3.linux tftp命令參數
主機:指定tftp要聯機的tftp服務器的ip地址或主機名。
4.linux tftp命令實例
1、安裝tftp服務器
需要安裝xinetd、tftp和tftp-server 3個軟件
如果能上網,通過yum安裝:
yum install xinetd
yum install tftp
yum install tftp-server
如果不能上網,可以直接安裝提供的rpm包:
rpm -ivh xinetd-2.3.14-18.fc9.i386.rpm
rpm -ivh tftp-0.48-3.fc9.i386.rpm
rpm -ivh tftp-server-0.48-3.fc9.i386.rpm
2、配置tftp服務器
修改/etc/xinetd.d/tftp文件,將其中的disable=yes改為disable=no。主要是設置TFTP服務器的根目錄,開啟服務。修改后的文件如下:
service tftp {
socket_type =dgram
protocol =udp
wait =yes
user =root
server =/usr/sbin/in.tftpd
server_args =-s /home/mike/tftpboot -c
disable =no
per_source =11
cps =100 2
flags =IPv4
}
說明:修改項server_args= -s -c,其中處可以改為你的tftp-server的根目錄,參數-s指定chroot,-c指定了可以創建文件。
3、啟動tftp服務器并關閉防火墻
/etc/init.d/iptables stop //關閉防火墻
sudo /sbin/service xinetd start
或
service xinetd restart
/etc/init.d/xinetd start
看到啟動[OK]就可以了
4、查看tftp服務是否開啟
netstat -a | grep tftp
顯示結果為udp 0 0 *:tftp *:*表明服務已經開啟,就表明tftp配置成功了。
5、tftp使用
復制一個文件到tftp服務器目錄,然后在主機啟動tftp軟件,進行簡單測試。
tftp 192.168.1.2
tftpget
tftpput
tftpq
6、tftp命令用法如下
tftp your-ip-address
進入TFTP操作:
connect:連接到遠程tftp服務器
mode:文件傳輸模式
put:上傳文件
get:下載文件
quit:退出
verbose:顯示詳細的處理信息
tarce:顯示包路徑
status:顯示當前狀態信息
binary:二進制傳輸模式
ascii:ascii 傳送模式
rexmt:設置包傳輸的超時時間
timeout:設置重傳的超時時間
help:幫助信息
? :幫助信息
7、如果老是出現“AVC Denial, click icon to view”的錯誤,并不能傳輸文件,需要作如下修改
修改/etc/sysconfig/selinux,將SELINUX設定為disable,使用命令setenforce 0讓selinux配置文件生效。
8、Busybox中tftp命令的用法
命令格式為:
tftp [option] ... host [port]
如果要下載或上傳文件的話是一定要用這些option的。
-g 表示下載文件 (get)
-p 表示上傳文件 (put)
-l 表示本地文件名 (local file)
-r 表示遠程主機的文件名 (remote file)
例如,要從遠程主機192.168.1.2上下載 embedexpert,則應輸入以下命令
tftp -g -r embedexpert 192.168.1.2
find 命令的基本結構如下:
find 命令手冊 : man find
find 命令中的 -name 選項可以根據文件名稱進行檢索( 區分大小寫 )。如需要忽略文件名中的大小寫,可以使用 -iname 選項。
-name 和 -iname 兩個選項都支持 wildcards 。如:
例1:查找 /usr 目錄下所有文件名以 .txt 結尾的文件
例2:查找 /usr 目錄下所有文件名剛好為 4 個字符的文件
例3:查以大寫字母開頭的文件
例4:查以兩個小寫字母和兩個數字開頭的txt文件
類似的還有:
-lname -ilname
-path -ipath
-regx -iregx
有些時候,你需要在搜索時匹配某個文件或目錄的 完整路徑 ,而不僅僅是匹配文件名。可以使用 -path 或 -ipath 選項。
例1:如查找 /usr 下所有文件名以 .txt 結尾的文件或目錄,且該文件的父目錄必須是 src 。可以使用以下命令:
例2:在當前目錄除aa之外的子目錄內搜索 txt文件
例3:在當前目錄,不再子目錄中,查找txt文件
如果只想搜索得到文件 或 目錄,即不想它們同時出現在結果中。可以使用 -type 選項指定文件類型。
-type 選項最常用的參數如下:
例:檢索 /usr 下所有文件名以 python 開頭的目錄
find 命令支持 -empty 選項用來檢索 為空 的文件或目錄。空文件即文件里沒有任何內容,空目錄即目錄中沒有任何文件或子目錄。
例:檢索用戶主目錄下所有的空目錄
find 命令也允許用戶對當前的匹配條件進行 “反義” (類似于 邏輯非 操作)。
如需要檢索 /usr 下所有文件名 不 以 .txt 為后綴的文件。可以使用以下命令:
也可以“翻轉”任何其他的篩選條件,如:檢索 /usr 下所有內容不為空的文件
為了檢索歸屬于特定用戶的文件或目錄,可以使用 -user 選項。
例:檢索根目錄下所有屬主為 starky 的文件
類似于 -user 選項, -group 選項則可以根據文件或目錄的 屬組 進行檢索。
有些時候,需要根據文件創建或修改的時間進行檢索。
Linux 系統中,與文件相關聯的時間參數有以下三種:
與此對應的是 find 命令中的 -mtime , -atime 和 -ctime 三個選項。
這三個選項的使用遵循以下示例中的規則:
檢索 /usr 下兩天前被修改過的文件
如果覺得 -mtime 等選項以 天 為單位時間有點長,還可以使用 -mmin , -amin , -cmin 三個選項。
查找比 aa.txt 新 的文件
查找比 aa.txt 舊 的文件
查找比aa.txt新,比bb.txt舊的文件
-size 選項允許用戶通過文件大小進行搜索(只適用于文件,目錄沒有大小……)。
表示文件大小的單位由以下字符組成:
另外,還可以使用 + 或 - 符號表示 大于 或 小于 當前條件。
檢索文件大小高于 1 GB 的文件
find 命令可以使用 -perm 選項以文件權限為依據進行搜索。
9.1使用符號形式
例1:如需要檢索 /usr 目錄下權限為 rwxr-xr-x 的文件,可以使用以下命令:
例2:搜索 /usr 目錄下所有權限為 r-xr-xr-x (即系統中的所有用戶都只有讀寫權限)的文件和目錄,可以使用以下命令:
很多時候,我們只想匹配文件權限的一個 子集 。比如,檢索可以直接被任何用戶執行的文件,即只關心文件的執行權限,而不用管其讀寫權限是什么。
上述的需求可以通過以下命令實現:
其中 a=x 前面的 / 符號即用來表示只匹配權限的某個子集(執行權限),而不用關心其他權限的具體設置。
9.2使用數字形式
例如:搜索 /usr 目錄下權限為 644 (即 rwxr-xr-x )的文件
find 命令默認是以 遞歸 的方式檢索項目的,這有時候會導致得到的結果數量非常巨大。可以使用 -maxdepth 限制 find 命令遞歸的層數。
例如:搜索時向下遞歸的層數最大為 3
在之前的例子中有出現多個搜索條件的 組合 以及對某個搜索條件的 反轉 。
實際上 find 命令支持 “and” 和 “or” 兩種邏輯運算,對應的命令選項分別是 -a 和 -o 。通過這兩個選項可以對搜索條件進行更復雜的組合。
此外還可以使用 小括號 對搜索條件進行 分組 。注意 find 命令中的小括號常需要用 單引號 包裹起來。因小括號在 Shell 中有特殊的含義。
如檢索 /usr 下文件名以 python 開頭且類型為目錄的文件
該命令等同于:
更復雜的組合形式如:
例4:在除dir0及子目錄以外的目錄下查找txt后綴文件
說明:-a 應該是and的縮寫,意思是邏輯運算符‘與’(); -o應該是or的縮寫,意思是邏輯運算符‘或’(||), -not 表示非.
命令行的意思是:如果目錄dir0存在(即-a左邊為真),則求-prune的值,-prune 返回真,‘與’邏輯表達式為真(即-path './dir0*' -a -prune 為真),find命令將在除這個目錄以外的目錄下查找txt后綴文件并打印出來;如果目錄dir0不存在(即-a左邊為假),則不求值-prune ,‘與’邏輯表達式為假,則在當前目錄下查找所有txt后綴文件。
-delete 選項可以用來刪除搜索到的文件和目錄。
例如:刪除 home 目錄下所有的空目錄:
-exec 選項可以對搜索到的結果執行執行該參數所給出的shell命令。形式為 command {} \; ,注意{}與\;之間有空格 。每當 find 命令檢索到一個符合條件的文件,會使用其完整路徑取代命令中的 {} ,然后執行 -exec 后面的命令一次。
例1:如需要將 home 目錄下所有的 MP3 音頻文件復制到移動存儲設備(假設路徑是 /media/MyDrive ),可使用下面的命令:
其中的 大括號 ( {} )作為檢索到的文件的 占位符 ,而分號( ; )作為命令結束的標志。因為分號是 Shell 中有特殊含義的符號,所以需要使用單引號括起來或前面加上轉義符 \ 。
例2:查看當前目錄下的所有普通文件,并在 - exec 選項中使用 ls -l 命令將它們列出
例3:在多個文件中檢索某個指定的字符串。如在用戶主目錄下的所有文件中檢索字符串 hello ,可以使用如下命令:
創建 Gzip 格式的壓縮文件的命令為:
現在假設需要將用戶主目錄下所有的 MP3 文件添加到壓縮包 music.tar.gz 中,直觀的感覺是,其命令應為如下形式:
實際情況是,這樣得到的 music.tar.gz 其實只包含一個 MP3 文件。原因是 find 命令 每次 發現一個音頻文件,都會再執行一次 -exec 選項后面的壓縮命令。導致先前生成的壓縮包被覆蓋。
可以先讓 find 命令檢索出所有符合條件的音頻文件,再將得到的 文件列表 傳遞給后面的壓縮命令。完整的命令如下:
如果想瀏覽搜索到的文件(目錄)的詳細信息(如權限和大小等),可以直接使用 -ls 選項。
例如:瀏覽所有 1G 以上大小的文件的詳細信息
與exec作用相同,區別在于,在執行命令之前,都會給出提示,讓用戶確認是否執行
與 exec 作用相同 ,起承接作用。區別在于 |xargs 主要用于承接刪除操作 ,而 -exec 都可用 如復制、移動、重命名等
例1:查找以ap或may開頭的文件
例2:查硬連接數大于2的文件或目錄
例3:查找含特定字符串的文件。查找當前目錄下含有"the string you want find…"字符串的文件:
例4:從根目錄開始查tmpfile,一旦查到馬上刪除
例5:如何用find查找某一天更改的文件?可以使用這一行命令來實現:
A Guide to the Linux “Find” Command
文章標題:linux.命令詳解,linux命令詳解之ls命令
標題路徑:http://vcdvsql.cn/article18/hejogp.html
成都網站建設公司_創新互聯,為您提供、網站建設、搜索引擎優化、網站維護、標簽優化、網站內鏈
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯