Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/lua/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用awk删除重复第一个字段的行_Awk_Sed - Fatal编程技术网

使用awk删除重复第一个字段的行

使用awk删除重复第一个字段的行,awk,sed,Awk,Sed,我有一个20多万行的文件。第一个字段是密钥ID。我需要删除2,3,4。。。重复第一个字段的行。救命啊!我快到最后期限了。我试过很多类似的问题,但都没有效果 这是你想要的吗 print -- " 1 1 1 2 2 2 3 3 3 4" | awk '{ if (! ($1 in alreadyPrinted)) {print $1 ; alreadyPrinted[$1]=$1;}' 输出 1 2 3 4 如果没有,请花时间添加小样本输入,并根据该输入显示所需的输出。如果您编写了一些代码,请

我有一个20多万行的文件。第一个字段是密钥ID。我需要删除2,3,4。。。重复第一个字段的行。救命啊!我快到最后期限了。我试过很多类似的问题,但都没有效果

这是你想要的吗

print -- "
1
1
1
2
2
2
3
3
3
4" | awk '{ if (! ($1 in alreadyPrinted)) {print $1 ; alreadyPrinted[$1]=$1;}'
输出

1
2
3
4
如果没有,请花时间添加小样本输入,并根据该输入显示所需的输出。如果您编写了一些代码,请包含这些代码,并包含您收到的错误消息的确切文本

IHTH GNU代码:

$cat file.txt 第11111行 第2行22121 第11212行 线路22222 第11313行 线路2 22323 第11414行 第2行22424 第11515行 第2行22525 $sed-nr'1{h;s/\s*(\s+).*/\1/\x;p};1.{x;G;/(\S+)\n\1.*/!{S/\n.*/;x;p;b};S/\n.*/;x;d}'file.txt 第11111行 第2行22121 线路22222 线路2 22323 第2行22424 第2行22525
首先:为什么您的截止日期要求您使用
awk
?有什么要求你没有提到吗?第二:为了确保清楚你想要什么,请发布一些输入和输出示例。请发布示例!你的文件分类了吗?您只想删除重复的(基于列1的)行吗?问题必须表明对正在解决的问题的最低理解。告诉我们你试过做什么,为什么不起作用,以及它应该如何起作用。另请参见:。由于问题特别提到了第一个字段,因此在整个过程中使用
$1
而不是
$0
可能是有意义的。如果文件已排序,则只需要一个变量,而不是数组。最好是$1。不清楚数据是否已排序。我的极简主义解决方案旨在帮助O.P.将我们真正理解问题所需的东西形象化。谢谢大家,祝大家好运。
sed -nr '1{h;s/\s*(\S+).*/\1/;x;p}; 1!{x;G;/(\S+)\n\1.*/!{s/\n.*//;x;p;b};s/\n.*//;x;d}' file.txt
$cat file.txt line1 11111 line2 22121 line1 11212 line2 22222 line1 11313 line2 22323 line1 11414 line2 22424 line1 11515 line2 22525 $sed -nr '1{h;s/\s*(\S+).*/\1/;x;p}; 1!{x;G;/(\S+)\n\1.*/!{s/\n.*//;x;p;b};s/\n.*//;x;d}' file.txt line1 11111 line2 22121 line2 22222 line2 22323 line2 22424 line2 22525