导航:首页 > 净水问答 > linux过滤重复行

linux过滤重复行

发布时间:2020-12-18 03:43:40

A. LINUX中如何不经过排序删除文件中重复的行(相同行,只保留一个)

楼上 uniq必须是连续的重复才行把

用awk肯定行

这是一个cu的精华帖,差不多,对于你的问题你给稍等我修改一下。(ps感谢红袖添香大姐)
CU精华 经典回顾

#假设我有如下文件:
#cat aa
#123 def1 456
#345 def2 812
#123 def3 563
#322 def4 684
#123 def5 879
#......................
#现在我想把第一列中字段相同的合并,第一列不相同的则保留,合并的原则就是保留第一个出现的前两个字段,第三个字段则把结果相加,以上面的示例为例:
#
#就是对于123开头的需要合并,合并后应该成为如下:
#cat aa
#123 def1 1898
#345 def2 812
#322 def4 684
#用shell如何实现?
#希望各位帮助,,谢谢,,

#要求总结:
#1 合并相同的第一列数据,并且计算第三列和
#2 第二列只保留第一次出现
#3 第一列顺序不变

觉得这个问题很经典,所以从CU论坛转过来了。
请大家一起学习

我们站在巨人的肩膀上。

问题补充:

看不太懂实现可以讲一下思路吗?

a[$1]+=$3
if(length(b[$1])==0)b[$1]=$2
我是这样做的
--------------------------2
谢谢你的补充, 已经明白了你对split的适用技巧,是用split(a[$1],tmp)在碰到匹配的$1时取出以前的统计结然后再用$3加上以前的结果是吧,很巧妙。谢谢
但是有2个问题:
1不满足 第二列保留第一次出现记录(现在是保留最后一次出现)
2不满足 第一列按照原来文件顺序出现

看看这个
awk 'BEING{n=0}
{
a[$1]+=$3
if(length(b[$1])==0)b[$1]=$2
if($1 in ind)next
ind[$1]
key[n]=$1
n++
}
END{
for(i in key)print key[i],b[key[i]],a[key[i]]
}' filename

#######################
#######################
#######################
这样就行了
#,/bin/bash

awk 'BEGIN{n=0}
{
if($0 in a)next
a[$0]
b[n]=$0
n++
}
END{
for(i in b)print b[i]
}' data

前提是你的数据文件里面每行没有空格,如果有用-F设定一个没有的字符作分隔符就。

B. Linux shell awk怎么去除行内,重复列

awk-F"[-,]"'{for(i=1;i<=NF;i++)a[$i,NR]++}{for(jina){split(j,b,SUBSEP);if(b[2]==NR)printfb[1]""}printf"
"}'关键词.txt>去除重复后.txt

以此例测试通过。


关于awk二维数组的使用:

awk的多维数组在本质上内是一维数组,更确切一容点,awk在存储上并不支持多维数组。awk提供了逻辑上模拟二维数组的访问方式。例如,array[2,4] = 1这样的访问是允许的。awk使用一个特殊的字符串SUBSEP (34)作为分割字段,在上面的例子中,关联数组array存储的键值实际上是2344。
类似一维数组的成员测试,多维数组可以使用if ( (i,j) in array)这样的语法,但是下标必须放置在圆括号中。
类似一维数组的循环访问,多维数组使用for ( item in array )这样的语法遍历数组。与一维数组不同的是,多维数组必须使用split()函数来访问单独的下标分量。split ( item, subscr, SUBSEP)。

C. LINUX如何删除一个文件中的重复行后并保持原来顺序

man
uniq
uniq
file_name
删除重复的行(重复的行只保留1个)
uniq
-u
file_name
只保留唯一的行(重复的行全部被删除)
但它只能处理相邻的重复行

D. linux 去除空行,去除重复,去除特定符号

cat /etc/services | sed "/^$/d" | uniq | sed "/^#/d"
cat /etc/services 打开文件 是你自己说用cat的,这里可专以不用属cat的
|是管道
sed "/^$/d" 删除空行
uniq排除重复的行
sed "/^#/d" 删除以#开头的行

E. linux去除重复行命令 重复行不固定。不是相邻的 求命令

sort aaa.txt | uniq > xxx.txt

F. linux grep查询结果再过滤

令|

grep查询过滤需要使用管道命令|。

举例说明:

1、在进程表中查找特定进程的命令通常如专下:

G. 如何快速删除Linux文件中的重复数据行

用uniq,如下,抄将 1.txt 中 所有 "相邻" 重复行合并成一行,结果存入 2.txt

uniq1.txt>2.txt

如果是想将相邻重复行彻底删掉(而不是合并成一行),可以用

uniq-u1.txt>2.txt

H. linux写一个shell命令行从一个文件中存储删除重复行 在另一个文件的输出。不使用任何脚本

使用sort命令的-u选项即可:
sort -u file1 >file2

I. LINUX下去除文件中重复的行

比如你/etc/passwd文件中有重复的行,执行如下指令清除:
cat /etc/passwd | sort -u > /tmp/passwd

这样/tmp/passwd中就没有重复的行了

J. 如何快速删除Linux文件中的重复数据行

可以借抄助awk来实现,准备处理的文件是 $filename

awk'{if(line[$0]==1){next;}else{print$0;line[$0]=1}}'<(cat$(filename)>$filename

便可以实现每一行只出现一次,且顺序保持不变

阅读全文

与linux过滤重复行相关的资料

热点内容
海尔空气净化器怎么清理 浏览:231
去哪里购买正品的汽车空调滤芯 浏览:219
朗逸空气滤芯什么品牌好 浏览:98
美菱纯水机多少钱一辆 浏览:128
洁厕灵强力除垢 浏览:281
蒸馏过程中吸收液颜色变化 浏览:686
清洗饮水机用什么工具 浏览:647
珠海哪里有污水横流 浏览:677
周公解梦梦见从污水中过去 浏览:626
高加索反渗透净水机安装视频 浏览:101
无氧去离子水是蒸馏水吗 浏览:29
亚魔斯空气净化器怎么用 浏览:105
净水器排出废水不喝了什么办 浏览:342
马桶除垢剂 浏览:295
最佳卫生间除垢剂 浏览:599
工业废水处理技术与应用 浏览:425
谈本人对反分裂反渗透斗争认识 浏览:387
小学生手工怎么做饮水机 浏览:667
空气净化器都出什么 浏览:805
下列不属于污废水处理调节池的是 浏览:592