我有一个文件:
aaaa_bbb_ccc: something
aaaa_ddd_zzz: something
bbbb_ccc_ddd: something
bbbb_ccc_eee: something
bbbb_ddd_eee: something
bbbb_ddd_fff: something
bbbb_eee_ggg: something
我想插入一个新行,基本上按第一个单词排序,然后按字母顺序按第二个字母分组,以使内容类似:
aaaa_bbb_ccc: something
aaaa_ddd_zzz: something
bbbb_ccc_ddd: something
bbbb_ccc_eee: something
bbbb_ddd_eee: something
bbbb_ddd_fff: something
bbbb_eee_ggg: something
我尝试过awk 'NR>1 && a && substr($1,1,1)!=a{ print "" }{ a=substr($1,1,1) }1'
,但只会在第一个单词之后插入。
答案 0 :(得分:3)
尝试一下这个awk:
awk -F'_' '{k=$1FS$2}k!=p&&NR>1{print ""}7;{p=k}' file
这适用于给定的示例。您的输入文件必须经过排序,并且不能存在空行。
答案 1 :(得分:0)
另一个awk,假设您输入的是问题中的排序输入
awk -F"_" ' { c=$2;if(c!=p && NR>1) { print "" } print ; p=c; } ' file