linux awk命令怎麼用? awk:用於一行中分成數個「欄位」來處理。適合處理 小型資料。
執行模式:awk '條件型別1{動作1} 條件型別2{動作2} ...' filename
# last | awk '{print $1 "\t" $3}' <== 檢視登入者的資料,只顯示登入罩滾名並悶高和ip地址,並以[tab]隔開
awk 的內建變數
變數名稱 代表的含義
NF 每一行($0)擁有的欄位總數
NR 當前 awk 所處理的是 「第幾行」 資料
FS 當前分隔符,預設空格鍵
awk 的邏輯運運算元
運算單元 代表含義
> 大於
< 小於
>= 大於或等於
<= 小於或等於
== 等於
!= 不等於
範例:
cat /etc/passwd | awk '{FS=":"} $3 < 10 {print $1 "\t" $3}' <== 檔案/etc/passwd是以":"分隔的,檢視第三欄小於10的資料,並且只顯示帳號與第三欄
以上是我對awk的總結,希望對你有幫助,是我寫的哦,不是復制的。
linux 怎麼用awk命令 取出一段文字
awk '/<DIMENSION NAME="CCCCCC" SRC_TYPE="INTERNAL">/,/<DIMENSIONS>/ {print $0}' filename
Linux awk命令問題
head -n 3 /etc/passwd|awk -F ':' '$1="root"' 這里$1="root",表示將第1列的值賦值為root,因此上述命令表示:將/etc/passwd中前3行按照『:』分隔後第一列以root顯示,並列印其他列。
awk -F ':' '$3=="0"' /etc/passwd
這里$3=="0",表示將第三列與"0」進行匹配,以什麼方式匹配呢?以『:』分隔後的第三列進行匹配並列印。這里是匹配列印,所以列印的是匹配的那一行(被:分隔後),而不是顯示分隔後的列。
所以,區別在於一個是分隔後賦值列印分隔後列的值,一個是按照指定分隔方式進行匹配找到匹配的行,列印的是匹配的那一行。
linux的awk命令問題
一行里 第一個元素和第三個元素
linux下 awk命令問題
1、其實這樣基本滿足要求。但是確實不夠嚴謹。試試是否可以。
ps -le | grep sshd | awk '{print $4}'
2、對ps 命令用的最多的是ps -ef 對el 我不是很了解具體輸出什麼。當然,是不是你壓根就沒有這個sshd服務啟動。這些都先驗證一下。一步一步的輸出,看看問題出現在管道的哪一個環節。
3、或者這個 $14==sshd 欄位你指定錯了。 awk $指定的變數是從1 開始的。$0是整個行。這個不要忘記了哦。
如果上述1第一種情況可以輸出,第二種2不可以話,可能就驗證了我的假設。你欄位拆解出現錯誤。把$14 這個欄位好好看看。
linux awk命令基礎 怎麼在終端寫
awk一般用於文字處理,通常用作資料提取。終端書寫demo
awk '{print }' info.txt
以上是輸出文字檔案info.txt的所有內容,請使用實際檔案進行替換info.txt
ps -ef|grep process_name | awk -F"" '{print $2}'
以上是查詢process_name程序的ID資訊,把查詢資訊作為引數傳給awk進行過濾,請使用實際程序名替換process_name。
awk命令在 linux和aix下的區別
三種呼叫awk的命令方式:
1.命令列方式:awk [-F field-separator] 'mands' input-file(s)
-F選項可選:awk -F: 'mands' input-file
2.將所有絕尺的awk命令插入一個檔案,並是awk程式可執行,然後用awk命令直譯器作為指令碼的首行,
以便通過鍵入指令碼名稱來呼叫它。
3.將所有的awk命令插入一個單獨檔案,然後呼叫:
awk -f awk-script-file input-files(s)
-f:指明在檔案awk-script-file中的awk指令碼
input-file(s):使用awk進行瀏覽的檔名。
awk指令碼
在命令中呼叫awk時,awk指令碼由各種操作和模式組成。
-F,awk每次讀一條記錄或一行,並使用指定的分隔符分分隔指定域;
所沒分隔符,則使用空格。
任何awk語句都由模式和動作組成
模式,決定動作語句何時觸發及觸發事件,若忽略模式部分,動作將時刻保持執行狀態。
模式,可是任何條件語句,或符合語句,或正則表示式。
BEGIN:設定計數,列印頭,在任何文字瀏覽動作之前;
END:用來在awk完成檔案瀏覽動作後列印輸出檔案總數和結尾狀態標志。
動作,在{}內指定;大多用來列印;裡面可包含:if,looping,迴圈推出結構;
若不指明採取動作,awk將列印所有瀏覽出來的記錄。
如何在Linux中使用awk命令
awk例項
1、cat /etc/passwd|awk -F: '{print $1}'
2、linux的awk一般都是gawk,/bin/awk -> gawk
3、awk 『/abc/』 file.txt 顯示檔案中包含abc行。類似grep abc a.txt
4、awk 『{print NR,NF,$1,$NF,}』 file.txt按空格分隔列,顯示當前記錄號、域數和每一行的第一列和最後一列。
-F引數可以設定分割引數,例如按:分割
awk -F: 『{print $1}』 /etc/passwd
或者cat file|awk -F 「|」 『{print $1}』
5、awk程式語言
cat v.txt|awk 『{print length($1)}』
6、awk中使用NR和FNR,一般在awk處理多個檔案時,NR==FNR才有意義
NF 當前記錄中的欄位數。
NR 當前記錄數。
FNR同NR,但相對於當前檔案。
awk 『{print NR,FNR}』 test.txt test2.txt
awk 『{if(NR==FNR){a[FNR]=$1;}else{print $1,a[FNR]}}』 b.txt a.txt
7、列印奇數行與偶數行
awk 『NR%2』 test.txt
awk 『!(NR%2)』 test.txt
8、殺死tomcat的s.sh指令碼
#!/bin/sh
ps -ef| grep tomcat |grep -v grep | awk 『{print $2}』 |xargs kill -9
9、列印前7列
cat a.txt|awk 『{NF=7}1』 >> b.txt
tail -f aess.log|awk 『NF=7′ OFS=』\t』 >> b.txt
cut -d」,」 -f3-6 urfile
LINUX系統怎麼使用awk命令實現下述操作
cat file|awk -F"name=" '{print $2}'|awk -F\" '{print $1}'
試試看,第二個」的轉義,我沒測試,可以自己調下
㈡ python,awk,shell格式化輸出內容全解
話不多說,直接開始
eg:
echo "Linux" | awk '{printf "|%-15s|\n",$1}'
|Linux |
說明:對於echo命令的輸出,Linux是經管道發給awk。printf函數包含一個控制串。百分號讓printf做好准備,它要列印一個佔15個格、向左對齊的字元串,這個字元串夾在兩個豎杠之間,並且以換行符結尾。百分號後的短劃線表示左對齊。控制串後面跟了一個逗號和$1。printf將根據控制串中的格式說明來格式化字元串Linux。
echo "Linux" | awk '{printf "|%15s|\n",$1}'
| Linux|
說明:字元串Linux被列印成一個佔15 格、向右對齊的字元串,夾在兩個豎杠之間,以
換行符結尾。
cat employees
Tom Jones 4424 5/12/66 543354
Mary Adams 5346 11/4/63 28765
Sally Chang 1654 7/22/54 650000
Billy Black 1683 9/23/44 336500
awk '{printf "The name is: %-15s ID is %8d\n", 3}' employees
The name is Tom ID is 4424
The name is Mary ID is 5346
The name is Sally ID is 1654
The name is Billy ID is 1683
說明:要列印的字元串放置在兩個雙引號之間。第一個格式說明符是%-15s,它對應的參數是$1,緊挨著控制串的右半邊引號後面的那個逗號。百分號引出格式說明:短劃線表示左對齊,15s表示佔15格的字元串。這條命令用來列印一個左對齊、佔15格的字元串,後面跟著字元串的ID和一個整數。
echo -e識別轉義和特殊意義的符號,如換行符、n、製表符\t、轉義符\等。
[root@xuexi tmp]# echo 'Hello World!\n';echo "Hello World"!
Hello World!\n
Hello World!
[root@xuexi tmp]# echo -e 'Hello World!\n';echo "Hello World"!
Hello World!
Hello World!
printf "%-10s %-8s %-4s\n" 姓名 性別 體重kg
printf "%-10s %-8s %-4.2f\n" 郭靖 男 66.1234
printf "%-10s %-8s %-4.2f\n" 楊過 男 48.6543
printf "%-10s %-8s %-4.2f\n" 郭芙 女 47.9876
運行
姓名 性別 體重kg
郭靖 男 66.12
楊過 男 48.65
郭芙 女 47.99
%s %c %d %f都是格式替代符
%-10s 指一個寬度為10個字元(-表示左對齊,沒有則表示右對齊),任何字元都會被顯示在10個字元寬的字元內,如果不足則自動以空格填充,超過也會將內容全部顯示出來。
%-4.2f 指格式化為小數,其中.2指保留2位小數。
eg:
printf "%d %s\n" 1 "abc"
printf %s abcdef
printf %s abc def
printf "%s %s %s\n" a b c d e f g h i j
等等等等
希望大家了解一下
㈢ linux三劍客的基本使用——grep、sed、awk
grep、sed、awk是linux功能非常強大的三個命令,grep是查找過濾文本,sed是對文本進行編輯替換,awk是對文本進行分析報告。
最簡單的理解就是找什麼東西用grep,想修改什麼內容用sed,想格式化內容用awk。
創建一個文件名為grep_text.txt的文件,並放入內容:
SillyMadman is both a madman and a fool.
Everyone agrees with this sentence.
我要查找在grep_text.txt文件里有Silly的行
命令是: grep Silly grep_text.txt
會返回內容:SillyMadman is both a madman and a fool.
也可以帶以下參數,這些我認為可能容易用到的參數,其它的參數需要另行查找
文檔,比如可以使用正則進行匹配。
內容相關的
-B, --before context=NUM顯示所在行之前的行數
-A, --after context=NUM顯示所在行之後的行數
-C, --context=NUM列印輸出上下文的行數
過濾內容相關的參數:
-i, --忽略大小寫區分
-w,--匹配查找的整個單詞
-x,--匹配查找的整行文本
-v, --過濾掉匹配的內容
輸出內容相關的參數
-n, --行號列印帶有輸出行的行號
比如,我要查找在grep_text.txt文件里不區分大小寫查找sillymadman,並顯示行號和匹配文本的下一行,那麼我可以用以下命令查找
grep sillymadman grep_text.txt -i -n -A1
內容返回為
1:SillyMadman is both a madman and a fool.
2-Everyone agrees with this sentence.
總體而言grep的使用方式就是
grep [參數...](查找的內容) (文件名)
grep也經常搭配管道符號"|"使用,比如我要查詢某程序的進程,並去掉查找進程本身,那麼命令為
ps -ef | grep program_name | grep -v grep
再創建一個文件名為sed_text.txt的文件,並放入內容:
SillyMadman is both a madman and a fool.
Everyone agrees with this sentence.
我想要在第一行下面添加一句:woshishazi
命令是:sed '1a\woshishazi' sed_text.txt
返回內容為:
SillyMadman is both a madman and a fool.
woshishazi
Everyone agrees with this sentence.
但是以上這個命令不會修改原文件,如果需要,需要加上-i
sed -i '1a\woshishazi' sed_text.txt
上面a是代表append,從指定行後面新的一行添加數據,還有其他操作
操作有以下這些
a :從下面一行新增
i :從上面一行插入,
d :刪除
c :整行替換
p :列印
s :對指定內容進行替換
下面稍微舉下例:
a: sed '1a\woshishazi' sed_text.txt 從第一行後面添加
i: sed '1i\woshishazi' sed_text.txt 從第一行前面插入
d: sed '1d' sed_text.txt 刪除第一行
c: sed '1c\woshishazi' sed_text.txt 替換第一行內容為woshishazi
p: sed -n '1p' sed_text.txt 列印第一行,一般搭配-n使用,其他內容就不會再展示
s:這個相對復雜一點需要詳細說明一下
sed的參數為 '[行]s/要被替換的內容/新的內容/g'
行是一個可選項,可以選擇具體的行進行替換
g代表替換所有匹配到的內容,也可以改為數字,表示第幾次匹配到時進行替換
sed 's\SillyMadman\shafengzi\g' sed_text.txt ,將所有SillyMadman替換為shafengzi
輸出結果為:
shafengzi is both a madman and a fool.
Everyone agrees with this sentence.
最後再創建一個文件名為awk_text.txt的文件,並放入內容:
1 a
2 b
3 c
4 d
5 f
以空白符作為分隔符這個文本相當於每一行有兩個欄位。
那麼列印第一個欄位時 awk '{print 0的話,則代表列印所有欄位
awk默認以空白符作為分隔符,也可以指定分割符通過-F
awk -F: '{print $1}' awk_text.txt,以「:」作為作為分隔符
那麼返回內容就為
1 a
2 b
3 c
4 d
5 f
相當於只有一列或者說一個欄位
然後還可以對前面加上一個正則對行進行匹配內容
awk '/a/{print 2 ~ /a/){print $1}' awk_text.txt
返回內容為
1