awk多个文件去重|awk 处理多个文件

|

① 4G内存条 awk如何给百G.txt文件去重

如果只是对整行的文本进行比较,且不在乎顺序改变,可以用更简单的办法:sort file.txt | uniq先将所有行按字符串顺序进行排序,然后去除重复的行

② seo会shell命令有什么用

在seo方面常用shell命令,这里的shell是cygwin在windows平台上运行的Lunix模拟环境。wc –c #查看less #查看文件中的内容格式,按“q”退出cat #打开文件,也可以同时打开多个文件,中间用 “|”命令分隔。Cat 1.txt 2.txt #合并打开文件Cat *.txt #打开所有文本文件grep #文本搜索命令,把符合搜索条件的行打印出来。Grep –参数文件名 #grep后面一半跟参数和文件名使用,也支持正则表达式。-I #不区分大小写-v #显示不符合搜索条件的所有行-c #显示符合搜索条件的行数Head #用来提取数据的前几行Tail #用来提取数据的后几行Head -10005 1.txt|tail -10000>>2.txt #head,tail的组合用法,提取1.txt文件中10005行到10000的数据,并写入2.txt文件中。Wc #用来统计文本大小、字符多少及行数等。Wc –c #统计文本的字节数。Wc –m #统计文本的字符数Wc –l #统计文本的行数Sort #对文件中的数据排序Sort –n #按数字的值进行排序,即“a-z,0-9”的顺序。Sort –r #按数字的值反向排序,即“9-0,z-a”的顺序。Uniq #去重命令,只能对已经排序的文档,才能起到去重计数的作用。Uniq –c #去重并显示重复的次数Awk #不需要对数据排序即可去重,当对源数据排序有特定需求时,可以选择awk来进行去重。Split #文件分割命令,带参数使用。Split –l 行数 #按行数切割Split –b #按字节切割文件,如出现切割乱码情况,可使用-c保持每行的完整性。

③ 求教,关于AWK把多行合成一行的问题

可用以下方法:1、筛选去重。选中该列数字,点菜单“数据”——“筛选”——“高级筛选”,点中“选择不重复记录”——“确定”。这时重复的将剔除,留下的是不重复记录,可再通过复制——选择性粘贴的办法保留去重后的数据。2、公式去重:假定数据在A列A1:A100。去重公式:=index(a:a,small(if(match(a$1:a$100,a$1:a$100,)=row($1:$100),row($1:$100),4^8),row(a1)))&"" 按组合键ctrl+shift+enter结束公式,下拉填充至出现空白。其中:match(a$1:a$100,a$1:a$100,)=row($1:$100)将不重复的数据标志,再通过if函数赋予自然编号。最后用index函数和small函数配合,依次将不重复数据列出。

④ awk 处理多个文件

[[email protected]~]#cataforiin`lsFree_*`dob=`awk'{print$2}'$i`d=`ls$i|awk-F_'{print$2}'`c=`awk'{print$2}'Green_$d`expr$b-$c>delta_$ddone[[email protected]~]#catFree_1df1212[[email protected]~]#catGreen_1asd34h[[email protected]~]#sh-xa++lsFree_1+foriin'`lsFree_*`'++awk'{print$2}'Free_1+b=12++lsFree_1++awk-F_'{print$2}'+d=1++awk'{print$2}'Green_1+c=34+expr12-34[[email protected]~]#catdelta_1-22你的脚本:[[email protected]~]#cataforiin`seq1130`dob=`awk'{print$2}'Free_$i`c=`awk'{print$2}'Green_$i`expr$b-$c>delta_$ddone主要是执行减法的时候报错,不用awk那样处理,awk后面必须接输入源

⑤ 循环比较目录中的多个文件,当两个文件某个内容相同的就移除这两个,继续比对,linuxSHELL脚本怎么写

事先建立一个文件夹tempfolder,每一个文件与其他所有文件比较后mv到tempfolder,剩下的文件再与其他文件比较。“两个文件某个内容相同”???????一行格式的命令:for i in * ;do for j in * ;do if [ -f "$i" ] && [ -f "$j" ] && [ "$i" != "$j" ]; then echo "$i"," ","$j" ;F1=$(grep 内容 “$i”);F2=$(grep 内容 “$j”) ; if [ "$F1" != "" ] && [ "$F2" != "" ] ;then rm "$i" "$j" ;fi ;fi ;done ;if [ -f "$i" ] ;then mv "$i" ./tempfolder;fi; done多行格式命令:for i in * ;do for j in * ;do if [ -f "$i" ] && [ -f "$j" ] && [ "$i" != "$j" ]; then echo "$i"," ","$j" #测试语句 F1=$(grep 内容 “$i”) F2=$(grep 内容 “$j”) if [ "$F1" != "" ] && [ "$F2" != "" ] ;then rm "$i" "$j" fi fi done if [ -f "$i" ] ;then mv "$i" ./tempfolder fidone

⑥ 如何使用awk命令对省市文件进行处理

awk实例1、cat /etc/passwd|awk -F: '{print $1}'2、linux的awk一般都是gawk,/bin/awk -> gawk3、awk ‘/abc/’ file.txt 显示文件中包含abc行。类似grep abc a.txt4、awk ‘{print NR,NF,$1,$NF,}’ file.txt按空格分隔列,显示当前记录号、域数和每一行的第一列和最后一列。-F参数可以设置分割参数,例如按:分割awk -F: ‘{print $1}’ /etc/passwd或者cat file|awk -F “|” ‘{print $1}’ 5、awk编程语言cat v.txt|awk ‘{print length($1)}’6、awk中使用NR和FNR,一般在awk处理多个文件时,NR==FNR才有意义NF 当前记录中的字段数。 NR 当前记录数。FNR同NR,但相对于当前文件。awk ‘{print NR,FNR}’ test.txt test2.txtawk ‘{if(NR==FNR){a[FNR]=$1;}else{print $1,a[FNR]}}’ b.txt a.txt7、打印奇数行与偶数行awk ‘NR%2’ test.txtawk ‘!(NR%2)’ test.txt8、杀死tomcat的stop.sh脚本#!/bin/shps -ef| grep tomcat |grep -v grep | awk ‘{print $2}’ |xargs kill -99、打印前7列cat a.txt|awk ‘{NF=7}1’ >> b.txttail -f access.log|awk ‘NF=7′ OFS=’\t’ >> b.txtcut -d”,” -f3-6 urfile

⑦ linux awk去重疑问

awk 'BEGIN{var=" ' "$file" ' "}END{print var;}' "$file"题{var=" ' "$file" ' "}边符号意思第步"$file" 比a.log第二部" ' a.log' "啥意思单引号起作用cat ct.log | awk -F '{print $1 "." $3}'ct.log文件: 1997/06/30 23:54:34 +0800 cwot: fail to login jack from [email protected]

⑧ linux文件合并,关键字去重复shell脚本

看看这个:[[email protected] ~]$ join -t'|' <(sort -t'|' -k1,1 -r -k5,5 a.txt | uniq -w3 | sort -t'|' -k1,1) <(sort -t'|' -k1,1 b.txt) > c.txt[[email protected] ~]$ cat c.txt123|kkk|jjj|sss|2013-02-21 16:11:07|OFF 135|bbb|ccc|ddd|2013-01-28 16:11:07|ON456|kkk|jjj|sss|2013-01-28 16:11:07|ON789|kkk|jjj|sss|2013-02-21 16:11:07|OFF——————-另一个方案:[[email protected] ~]$ awk -F'|' 'NR==FNR{b[$1]=$2}; NR!=FNR{a[$1]=$0 OFS b[$1]; ti[$1]=(ti[$1]<$5?$5:ti[$1])}; END{for (i in a){if (a[i]~ti[i]) print a[i]}}' b.txt a.txt > c.txt[[email protected] ~]$ cat c.txt456|kkk|jjj|sss|2013-01-28 16:11:07 ON123|kkk|jjj|sss|2013-02-21 16:11:07 OFF 135|bbb|ccc|ddd|2013-01-28 16:11:07 ON789|kkk|jjj|sss|2013-02-21 16:11:07 OFF ——————-两方案都破坏原有的顺序,如果你要保持 a.txt 中的顺序,你另外做个排序吧

⑨ 关于使用awk命令一次统计多个文件

这个需求用不着管道两次,直接awk本身即可完成:awk 'FNR!=NR&&FNR==1{print FILENAME ":" ct;ct=0}$3~/关键字/{ct++}' *.log

⑩ 如何使用shell提取多个文本中相同的内容

问题太笼统,只能有个大致思路,按如下步骤:

使用类似下面的语句将所有文件整合为一个,排序去重后统计出一个最全数字合集。

catfile1file2file3…|sort|uniq>dataset

分别统计合集中的所有数字在各文件中出现的次数

forfileinfile1file2file3…do#分别统计dataset中每个数字在各个文件中出现的次数#结果以“数字次数1次数2次数3…”的形式存入一个文件statisticdone

使用awk分析statistic文件,提取所有次数均>0的数字。

awk'BEGIN{flag=1}{for(i=2;i<=NF;i++){if($i==0)flag=0}if(flag==1)print$1}'statistic>result

最后删除中间文件dataset和statistic,只保留最终结果文件result.

要具体咨询建议加我网络hi交流或直接追问。


赞 (0)