awk編程
Ⅰ linux shell 編程 awk -F/ 'OFS="/"{$NF="";print}'`這條腳本是什麼意思,今天在公司的一個腳本中看見!
-F/ 欄位分隔符設為/ 將輸入文本流分割為多個欄位進行處理
OFS="/" 設置輸出時的欄位分隔符為/
$NF="" 將最後一個欄位內容設置為空,即去除每行的最後一個欄位
最後通過print列印出來。
例如,一個文本內容為:
a/b/c/d/e
h/i/j/k/l/m
處理後的輸出內容為:
a/b/c/d/
h/i/j/k/l/
Ⅱ 求教shell編程 awk和grep的問題。謝謝!!
如果AAA.txt的內容很多的話,我建議這樣寫
cat AAA.txt | awk '{ OFS = "\n" ; $1=$1; print $0 }' | grep "ryl$"
OFS = "\n" 是把分隔符改成換行符
就變成
//sohu/sinacnu
//sohu/sinaryl
//sohu/sinaghr
然後再用$1=$1; print $0把所有內容顯示出來。
這樣AAA.txt的內容就變成了每行就只有一段地址,最後過濾結尾為ryl的的行
Ⅲ awk是命令還是編程語言
在 UNIX/Linux 系統中,awk 和 sed 、以及SHELL語言,都可以看做是功能及其強大的腳本編程語言。其中:awk 可以處理和過濾各種復雜的正則表達式、以及各種命令、sed 處理字元串替換,另外再加上管道操作 PIPE。就可以處理各種非常復雜的文本內容了。
Ⅳ awk編程問題
df -h | awk '{if(NR==2)print $4}' | awk -F"G" '{print $1}'
df -h | awk '{if(NR==2)print $4}' | sed 's/.$//'
df -h | awk -F"G" '{if(NR==2) print $3}'
Ⅳ linux三劍客是什麼意思
shell命令:awkgrepsed
Ⅵ 急!兩道linux shell awk編程題請教!
1 第一題 data.tmp是文件名
awk -F'&&' '{a[$1]+=$2}END{for(i in a)print i,a[i]}' data.tmp
2 先去吃早點 等等在作
awk -F'|' 'NR==FNR{a[$1]=$2}NR>FNR{if($1 in a)print $0,a[$1]}' f1 f2
這樣就可以了, 但是只限於這個特例, 如果第一列會有重復出現, 就有bug了。 或者在第二個文件的第一列中的數值在第一個文件中沒有出現過,也會有bug
Ⅶ 在Linux中用AWK編程:統計詞頻 統計考試成績,假設學生成績清單如下:
y:root:/tmp/ss>catxx44.dat
jasper:808284848892
andrea:858990909495
oellis:899092969698
mona:707077838589
john:788588919294
nce:606061626480
y:root:/tmp/ss>./xx44
Total6Average83
jasper:808284848892average85(B)
andrea:858990909495average90.5(A)
oellis:899092969698average93.5(A)
mona:707077838589average79(C)
john:788588919294average88(B)
nce:606061626480average64.5(D)
high:4low:2
A-2
B-2
C-1
D-1
y:root:/tmp/ss>catxx44
#!/bin/bash
awk'BEGIN{
sum=0
}
functiongetmark(s)
{
if(s<60)
mark="F"
elseif(s>=60&&s<70)
mark="D"
elseif(s>=70&&s<80)
mark="C"
elseif(s>=80&&s<90)
mark="B"
elseif(s>=90)
mark="A"
returnmark
}
{
name[NR]=$1
subtotal[$1]=0
for(i=2;i<=NF;i++){
score[$1,i]=$i
subtotal[$1]+=$i
}
average[$1]=subtotal[$1]/(NF-1)
sum+=average[$1]
}
END{
allav=sum/NR
locount=0
hicount=0
printf("Total%dAverage%d ",NR,allav)
for(keyinname){
printf("%s ",name[key])
for(i=2;i<=NF;i++)
printf("%s",score[name[key],i])
printf("average%s(%s) ",
average[name[key]],
getmark(average[name[key]]))
if(average[name[key]]>=allav)
hicount++
else
locount++
markcnt[getmark(average[name[key]])]++
}
printf(" ");
printf(" high:%slow:%s ",hicount,locount)
for(keyinmarkcnt)
printf("%s-%s ",key,markcnt[key])
}'xx44.dat
Ⅷ 嵌入式C對於LINUX SHELL編程有要求么 需要掌握AWK么
最好能夠掌握。
C語言中也可以通過system()調用使用命令行。
makefile中也可能會用到awk,畢竟awk的文本處理功能很強大。
C代碼最終也是編譯成可執行文件運行的,可以在shell中調用,可以做輸入輸出重定向。
一個典型的場景:嵌入式Linux一般採用開機腳本的方式載入應用程序及守護進程。這就是shell腳本的應用啊,應用程序和守護進程都是C編寫的並編譯為可執行程序。
Ⅸ shell 編程求解,下面的代碼里awk 是什麼意思
awk是一個強大的文字處理工具,這是我的awk學習筆記http://blog.uouo123.com/post/312.html
awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}'是把tcp開頭的匹配出來,再把末尾那一列出現的次數進行匯總
TIME_WAIT 4
ESTABLISHED 2
這樣就可以知道tcp連接狀態的情況了
Ⅹ awk怎麼提取某一關鍵詞後的內容
echo "關鍵詞後的內容"|awk '{ if(match($0,"關鍵詞")) {
print substr($0,RSTART+RLENGTH) }}'
match函數查找關鍵詞後,自動設置的兩個變數RSTART表示關鍵詞開始位置,RLENGTH表示關鍵詞長度,用substr從關鍵詞後的一個位置取出內容即可
AWK是一種處理文本文件的語言,是一個強大的文本分析工具。
本文將使用命令awk將具有某個關鍵字的段落提取出來。
AWK是一個優良的文本處理工具,Linux及Unix環境中現有的功能最強大的數據處理引擎之一。這種編程及數據操作語言(其名稱得自於它的創始人阿爾佛雷德·艾侯、彼得·溫伯格和布萊恩·柯林漢姓氏的首個字母)的最大功能取決於一個人所擁有的知識。