awk前两列为空

awk前两列为空

1
2
#awk前两列为空,sub(/^[[:space:]]+/, "")删除空格
awk '{ $1=$2=""; sub(/^[[:space:]]+/, ""); print }' input.txt

awk匹配某一列值,并打印除第一、二列的其他列

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
#第五列值为"是"
ffing.cn@iMac ~ % cat /Users/ffing.cn/Downloads/test.csv |awk -F ',' '$5=="是" {$1=$2=null;print }'
  a3 a4  a6
  c3 c4  c6
#OVF指定输出分隔符
ffing.cn@iMac ~ % cat /Users/ffing.cn/Downloads/test.csv |awk -F ',' -v OFS=',' '$5=="是" {$1=$2=null;print }'
,,a3,a4,是,a6
,,c3,c4,是,c6
#sed删除开头的一个逗号
ffing.cn@iMac ~ % cat /Users/ffing.cn/Downloads/test.csv |awk -F ',' -v OFS=',' '$5=="是" {$1=$2=null;print }'|sed 's/^,//g'
,a3,a4,是,a6
,c3,c4,是,c6
#sed再次删除开头的一个逗号
ffing.cn@iMac ~ % cat /Users/ffing.cn/Downloads/test.csv |awk -F ',' -v OFS=',' '$5=="是" {$1=$2=null;print }'|sed 's/^,//'|sed 's/^,//'
a3,a4,是,a6
c3,c4,是,c6

awk将行号放置到最后一列的方法

1
2
3
4
5
6
7
8
#cat+awk实现将行号行标放置最后一列
cat -n /etc/rc.loacl|awk '{print $0,$1}'|awk '$1=null;{print}'

#awk实现将行号行标放置最后一列NR代表行号
[root@oracle test]# cat 1.txt| awk ' {print $0,NR}'
alone1  1  11 1
alone   2 22 2
deathing 3 33 3

awk匹配某一列=="exit",常量需要使用双引号!因为外置是单引号!和grep -w参数一致定位单词

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
[root@oracle test]# cat 1.txt
alone1  1  11
alone   2 22
deathing 3 33
#awk第一列==alone
[root@oracle test]# cat 1.txt |awk '$1=="alone"  {print}'
alone   2 22
#grep -w w为单词过滤单词
[root@oracle test]# cat 1.txt|grep -w alone
alone   2 22

awk匹配某一列,并除第一、二列不打印,其它列打印

#awk定义外置变量为内置变量,不需要加$和引号

1
2
3
LINE_VAR1=`echo $LINE|awk '{print $1}'`
LINE_VAR2=`echo $LINE|awk '{print $2}'`
LINE_NUM=`cat -n $SRC_FILE |awk -v var1=$LINE_VAR1  '$2==var1 {print}'|awk '{print $1}'`

awk 过滤行内包含字符串的

awk '/字符串/ {print} ' 进行过滤包含alone的行,类同grep功能,如果需要是过滤一个单词需要使用 grep -w

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
#过滤包含alone的行awk 或者grep
[root@oracle test]# cat 1.txt
alone1  1  11
alone   2 22
deathing 3 33
[root@oracle test]# cat 1.txt |awk '/alone/  {print }'
alone1
alone

#但如果需要包含alone行的最后一列

awk NR代表行!可以用于定位行

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
#awk 打印第二行
[root@oracle test]# cat 1.txt
alone1  1  11
alone   2 22
deathing 3 33
[root@oracle test]# cat 1.txt| awk 'NR==2 {print}'
alone   2 22

#awk定位某一行最后一列
[root@oracle test]# cat 1.txt| awk 'NR==2 {print $NF}'
22

#打印行对应的列
[root@oracle test]# cat 1.txt| awk ' {print $NR}'
alone1
2
33

#awk输出最后一行NR==`wc -l`获取最后一行
[root@oracle test]# cat 1.txt| awk 'NR== '`cat 1.txt|wc -l`' {print $0,NR}'
deathing 3 33 3


#输出第二行到最后一行
awk 'NR>=2{print}' filename


#多个文件输出第二行到最后一行
awk 'NR>=2{print}' file1 file2 ...