VIM 用正则表达式 批量替换文本,多行删除,复制,移动 在VIM中 用正则表达式 批量替换文本,多行删除,复制,移动 :n1,n2 m n3 移动n1-n2行(包括n1,n2)到n3行之下: :n1,n2 co n3 复制n1-n2行(包括n1,n2)到n3行之下: :n1,n2 d 删除n1-n2行(包括n1,n2)行: vi替换使用规则: :g/s1/s/s2/s3/g 第一个g表示对每一个包括s1的行都进行替换,第二个g表示对每一行包括s1的行所有的s2都用s
[root@localhost cc]# cat 2.txt adc 3 5 a d aa 3 adfa d ba 3 adf 第1列相同的第2列按";"拼起来,最后输出第1列和拼起来的结果: [root@localhost cc]# awk '{a[$1]=a[$1] ";"$2} END{for (i in a)print i,a[i]}' 2.txt |sed 's/;//'a d;3;d;3adc 3 第1列相同的第2和第3列按";"拼起
[root@localhost cc]# cat 2.txt adc 3 5 a d aa 3 adfa d ba 3 adf 去重第一列重复的行: [root@localhost cc]# cat 2.txt |awk '!a[$1]++{print}'adc 3 5 a d a 重复的行取最上面一行记录 去重以第一列和第二列重复的行: [root@localhost cc]# cat 2.txt |awk '!a[$1" "$2]++{print}'adc 3 5 a d aa 3
a文件为 a a a s s d .怎么把a文件变为 a s d .怎么把a文件变为 a a a s s d 解题方法如下: 解题思路 [root@localhost study]# awk 'NR==FNR{a[$2]++}NR!=FNR&&++b[$2]==1{print $1,$2,a[$2]}' a a1 a 34 s 26 d 1 NR=FNR处理第一个文件a-----> {a[$2]++} a[$2]++相当于a[$2]=a[$2]+1 a[a]=a[a]+1=0+1=