改变缺省设置的选项主要有:
- m 若给定文件已排好序,合并文件。
- c 检查给定文件是否已排好序,如果它们没有都排好序,则打印一个出错信息,并以状态值1退出。
- u 对排序后认为相同的行只留其中一行。
- o 输出文件 将排序输出写到输出文件中而不是标准输出,如果输出文件是输入文件之一,sort先将该文件的内容写入一个临时文件,然后再排序和写输出结果。
改变缺省排序规则的选项主要有:
- d 按字典顺序排序,比较时仅字母、数字、空格和制表符有意义。
- f 将小写字母与大写字母同等对待。
- I 忽略非打印字符。
- M 作为月份比较:“JAN”<“FEB”
- r 按逆序输出排序结果。
+posl - pos2 指定一个或几个字段作为排序关键字,字段位置从posl开始,到pos2为止(包括posl,不包括pos2)。如不指定pos2,则关键字为从posl到行尾。字段和字符的位置从0开始。
- b 在每行中寻找排序关键字时忽略前导的空白(空格和制表符)。
- t separator 指定字符separator作为字段分隔符。
例子:
[root@TestAs4 mdn]# more mdn_dishi.txt[root@TestAs4 mdn]# sort -n -u -k 1 mdn_dishi.txt >chenwenming_mdn_d
#把文件mdn_dishi.txt第一字段以数字排序并除重
awk '{ print $2 }' file >txt 取第二列 以空格为分界线
[root@TestAs4 cwm]# awk '{print $1}' 133mdn.txt |uniq -c #给文件133mdn.txt第一个字段分组统计
2336 七台河
2033 伊春
3331 佳木斯
2530 双鸭山
39811 哈尔滨
845 大兴安岭
-----------------------------------------------------------------------------
awk处里两个文件连查方法
[root@TestAs4 cwm]# awk '{print $1,substr($1,1,7)}' hlj_jifei >hlj_temp
[root@TestAs4 mdn]# more hlj_temp
130097XX055 1300970
130097XX495 1300970
[root@TestAs4 mdn]# more test1
1300019 510 020 广州
1300101 110 010 北京
1300103 110 010 北京
[root@TestAs4 mdn]# awk 'NR==FNR{a[substr($1,1,7)]=$4}NR>FNR&&a[b=substr($1,1,7)]{print $1,a[b]}' test1 hlj_temp
或
[root@TestAs4 mdn]# awk 'NR==FNR{a[$1]=$4}NR>FNR&&a[b=substr($1,1,7)]{print $1,a[b]}' test1 hlj_temp
130097XX055 哈尔滨
130097XX495 哈尔滨
--------------------------------------------------------------------------------------
[root@TestAs4 mdn]# more temp
1300970 130097XX055
1300970 130097XX495
[root@TestAs4 mdn]# more awk_script
BEGIN { while ((getline < "test1") > 0){ lines[$1]=$4 };OFS=" " }
{
if($1 in lines){
$1=lines[$1] #把test1文件的$4替换到temp文件的$1上
print $0
}
}
#要求把test1文件的第四个字段插入到temp文件的相应条目的第一个子段中
#利用getline获取test1文件的第四个字段,并且放到一个数组中。
[root@TestAs4 mdn]# ls
2 3 awk_script cwm hlj_jifei hlj_temp newmdn_table.TXT temp test1
[root@TestAs4 mdn]# awk -f awk_script temp |more
哈尔滨 130097XX055
哈尔滨 130097XX495