Awk過濾中括弧
1. 如何用sed或awk提取方括弧中字元串
基本思路,先用逗號做分割,然後過濾出d=開頭的字元串,清掉中括弧,提內取出裡面的內容:
例如:容
echoa=[asdfghjk],b=[],c=[],d=[asdfghjklkjhgfds1234sdfgh]|awk-F","'{for(i=1;i<=NF;++i)print$i}'|awk'gsub("d=",""){gsub("^\[","",$0);gsub("\]$","");print$0}'
2. 請教awk裡面花括弧和分號的問題
1.ifconfig|awk'NR==2{split($2,a,":");printa[2]}'2.ifconfig|awk'{if(NR==2){split($2,a,":");printa[2]}}'3.ifconfig|awk'{if(NR==2){split($2,a,":")}};{printa[2]}'三條語句中,前兩條處理結果一樣,第三條,列印了多行IP請解釋下三條都是怎樣的處理過程,我不太理解
3. 利用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的數據,並且只顯示帳號與第三欄
4. 怎麼使用awk,grep,sed 把如下的三個東西過濾出來
root@回localhost:~答#cat1
commit3741acc78624
Author:abc.zhang
Date:balabala
[ID00965432]CM/BRDgoogleissues.
root@localhost:~#awk'/commit/{print$2}'1
3741acc78624
root@localhost:~#awk'/Author/{print$2}'1
abc.zhang
root@localhost:~#awk-F"[\[\]]"'/ID00/{print$2}'1
ID00965432
5. awk 什麼時候用分號和大括弧
1.ifconfig |awk 'NR==2{split($2,a,":");print a[2]}'
2.ifconfig |awk '{if(NR==2){split($2,a,":");print a[2]}}'
3.ifconfig |awk '{if(NR==2){split($2,a,":")}};{print a[2]}'
三條語句中,前兩條處理結果一樣,第三條,列印了多行IP
請解釋下 三條 都是怎樣的處理過程, 我不太理解
6. 怎麼從awk的正則表達式中提取出括弧匹配的部分
typedef struct _Student
{
char name[20];
unsigned int age;
} Student;
7. 怎麼用awk取括弧()里的東西
awk '{match($0,/\([^()]*\)/);print substr($0,RSTART+1,RLENGTH-2)}'
8. awk如何用中括弧做分隔符,請高手指點
[root@localhost ~]# echo 12[33]44|awk -F[ '{print $1}'
12
[root@localhost ~]# echo 12[33]44|awk -F[ '{print $2}'
33]44
[root@localhost ~]# echo 12[33]44|awk -F"[" '{print $2}'
33]44
[root@localhost ~]# echo 12[33]44|awk -F"[\[\]]" '{print $2}'
awk: warning: escape sequence `\[' treated as plain `['
awk: warning: escape sequence `\]' treated as plain `]'
只能分2步去操作了,一個個來
9. awk 條件過濾
sed -i 's/^.*CST.*$//g' file #把時來間刪掉
awk '{sub(/.*CST.*/,"")};1' file #awk的
後邊源那句:
其他的輸出不一定有規律,也不一定是總和為:組播為什麼等
我沒聽懂說的什麼意思。
10. 如何使用 awk 和正則表達式過濾文本或文件中的字元串
awk默認使用空格做為分隔符,可以看到,我輸出了"a b c d e" 每個字母之間都有個空格
剛好我可以利用awk默認使用空格作為分隔符這一特點來進行分割過濾
這樣過濾出來的第一列就是a,第二列就是b......以此類推。
如果有復雜的、難處理的可以繼續追問,我也很喜歡解決這些問題