合并文本文件相同列内容 - 使用sed、awk、grep脚本/n/n假设存在文本文件a.txt,内容如下:/n/n/n123 qwe/n123 adc/n234 qsd/n234 qaz/n245 wer/n/n/n文件有两列,以空格分隔。目标是将第一列相同的内容的第二列合并到一起,并删除重复行,最终结果保存在b.txt文件,例如:/n/n/n123 qwe adc/n234 qsd qaz/n245 wer/n/n/n下面提供三种实现方法:/n/n### 使用sed实现/n/n/nsed ':a;N;$!ba;s///n/ /g;s///([^/s]*//)//s//([^/n]*//)//s*//1.*///1 //2/g' a.txt > b.txt/n/n/n解释:/n/n- :a;N;$!ba:将整个文件读入到模式空间中,同时用标签a来标记,以便后续处理。/n- s///n/ /g:将所有换行符替换为空格,将多行合并成一行。/n- s///([^/s]*//)//s//([^/n]*//)//s*//1.*///1 //2/g:匹配第一列相同的行,将第二列的内容追加到第一列的后面,并删除这一行。/n- a.txt > b.txt:将结果保存到b.txt文件中。/n/n### 使用awk实现/n/n/nawk '{a[$1]=a[$1]' /'$2/'}END{for(i in a) print i,a[i]}' a.txt > b.txt/n/n/n解释:/n/n- {a[$1]=a[$1]' /'$2/'}:将第一列作为数组a的索引,将第二列的内容追加到数组元素中。/n- END{for(i in a) print i,a[i]}:在所有行处理完后,遍历数组a,输出结果。/n- a.txt > b.txt:将结果保存到b.txt文件中。/n/n### 使用grep实现/n/n/ngrep -oP '^/S+/s/K.*$' a.txt | awk '{a[$1]=a[$1]' /'$2/'}END{for(i in a) print i,a[i]}' > b.txt/n/n/n解释:/n/n- grep -oP '^/S+/s/K.*$' a.txt:使用grep提取第二列的内容。/n- awk '{a[$1]=a[$1]' /'$2/'}END{for(i in a) print i,a[i]}':与awk实现相同。/n- > b.txt:将结果保存到b.txt文件中。/n/n希望以上脚本能够帮助你快速处理文本数据。/n

合并文本文件相同列内容 - 使用sed、awk、grep脚本

原文地址: https://www.cveoy.top/t/topic/nI6w 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录