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......以此类推。
如果有复杂的、难处理的可以继续追问,我也很喜欢解决这些问题