首页
学习
活动
专区
圈层
工具
发布

如何用 awk 删除文件中的重复行【Programming】

我做了研究发现以下几点: 输入文件的每一行都会执行awk“脚本”!visited[$0]++。 visit []是类型为关联数组 (又称为Map )的变量。...visited [ $0]访问存储在映射中的值,其键值等于$0(正在处理的行),也称为匹配项(我们将会在下面设置)。 取非(!)的值:在awk中,任何非零数字值或任何非空字符串值均为true 。...默认情况下,变量被初始化为空字符串,如果转换为数字则为零。换言之:如果visit [[0]]返回大于零的数字,则此否定结果为false 。...否则,不执行操作,也不打印任何内容。 为什么不使用 uniq 命令? uniq命令仅除去相邻的重复行 。...1 abc 4 def 2 ghi 8 klm 5 xyz Sort-nk1根据行的第一列(k1选项)对行进行排序,并将该列视为数字(- n 选项)。

10.8K00

笨办法学 Java(三)

当你在输入这段代码时,不要错过第 6 行末尾的throws Exception。(在这个练习中,我会解释这意味着什么。)...练习 42:从文件中获取数据 能够将信息放入文件的程序只是故事的一部分。因此,在这个练习中,您将学习如何读取已经存在于文本文件中的信息。 如果你输入这段代码并编译并运行,它会崩溃。...(这个值已经在其中了,所以这段代码没有任何用处。) 在第 12 行,我们打印出数组中所有三个当前值,这样你就可以看到它们都是零。 在第 15 到 17 行,我们将随机数放入数组的每个槽中。...然后在那之后,我有 6717 行温度,每行一个。 在这段代码的第 29 行,我从文件中的第一行读取count。我使用该计数来决定第 31 行上我的数组应该有多大。...所以,六个月后,如果我决定向文件中添加更多温度,我只需要更改文件的第一行,这段代码仍然可以工作。是不是一个不错的技巧? 在第 31 行,我们定义了一个具有count槽的双精度数组。

39110
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    深入浅出地,彻彻底底地理解python中的编码

    我们在shell中键入python以打开python命令行,并键入如下两句话: s = "中国zg" e = s.encode("utf-8") 现在的问题是:这段代码能运行吗?...ASCII编码中没有这玩意儿,因为ASCII编码中字节第一位都是0。 怎么办? 报错呗,于是我们就看到了上面的错误。 错误中的0xe4就是字符 “中” 的utf8编码的第一个字节。 问题3:How?...问题4:如何搞定 下面,我们在python命令行中输入如下两行代码: e = s.decode("utf-8") isinstance(e,unicode) 程序的输出是True,这说明,decode后返回的...不同的操作系统默认使用的编码是不一样的,当我们在linux下,通常需要用utf8做decode,在Windows下,通常需要用gbk做 decode。这样,我们的代码就只能在特定的平台运行。...strip() with open("b.txt","w") as f: f.write(s) 请问这段代码能执行吗?

    92290

    构建shell脚本一文就够

    /bin/bash 脚本文件的第一行中 #后的惊叹号会告诉shell使用哪个shell来运行脚本(如果是其他编码语言脚本,像python,第一行类似)。 其他地方的 #用作注释行。...这个是初学者常见的一个问题,本人也非常不太适应这个。因为在其他语言中不区分等号两边的空格,相信接触过其他脚本的朋友们肯定有习惯打空格使代码美观的,这在bash shell中是万万行不通滴。...(Bourne shell中) wsx@wsx-ubuntu:~/script_learn$ exrpr 1 + 5未找到 'exrpr' 命令,您要输入的是否是: 命令 'expr' 来自于包 'coreutils...浮点解决方案 最常见的方案是用内建的bash计算器。它实际上是一门编程语言,它允许在命令行中输入浮点表达式,然后解释并计算该表达式,最后返回结果。...bash计算器能够识别: 数字(整数和浮点数) 变量(简单变量和数组) 注释(/* */开始的行) 表达式 编程语句 函数 wsx@wsx-ubuntu:~/script_learn$ bcbc 1.06.95Copyright

    1.6K51

    批处理-For详解

    ) do echo %%i pause 这段代码,主要是让你树立这样一种观念:读取文本文件的内容(注:改为“逐行分析文本文件的内容”,因为读取文本文件内容的方法命令有很多,比如重定向输入,又比如type...[txt2] 的内容被切分,切分符号为逗号,当切分完第一节之后,切分动作不再继续下去,因为 tokens=1,* 中,星号前面紧跟的是数字1;第一节字符串被切分完之后,其余部分字符串不做任何切分,整体作为第二节字符串...的报错信息。可见,在指定字符的时候,只能指定1个——在很多时候,我对这样的设计颇有微词而又无可奈何:为什么只能指定1个而不是多个?...1、当你希望读取文本文件中的内容的话,第一个括号中不用任何符号包裹,应该使用的是第1条语句;例如:你想显示test.txt中的内容,那么,就使用 for /f %%i in (test.txt) do...批处理会把 test 1.txt 这个文件名识别为字符串啊! 你百无聊赖地在CMD窗口中输入 for /? ,并重重地敲下了回车,漫无目的地在帮助信息中寻找,希望能找到点什么。

    71620

    批处理for详解_python批处理

    ) do echo %%i pause   这段代码,主要是让你树立这样一种观念:读取文本文件的内容(注:改为“逐行分析文本文件的内容”,因为读取文本文件内容的方法命令有很多,比如重定向输入,又比如type...[txt2] 的内容被切分,切分符号为逗号,当切分完第一节之后,切分动作不再继续下去,因为 tokens=1,* 中,星号前面紧跟的是数字1;第一节字符串被切分完之后,其余部分字符串不做任何切分,整体作为第二节字符串...的报错信息。可见,在指定字符的时候,只能指定1个——在很多时候,我对这样的设计颇有微词而又无可奈何:为什么只能指定1个而不是多个?...1、当你希望读取文本文件中的内容的话,第一个括号中不用任何符号包裹,应该使用的是第1条语句;例如:你想显示test.txt中的内容,那么,就使用 for /f %%i in (test.txt) do...批处理会把 test 1.txt 这个文件名识别为字符串啊! 你百无聊赖地在CMD窗口中输入 for /? ,并重重地敲下了回车,漫无目的地在帮助信息中寻找,希望能找到点什么。

    3.9K20

    Python 密码破解指南:10~14

    技术上,用户不必输入Q退出;任何不以C开头的字符串都会导致调用sys.exit()函数来退出程序。 读取输入文件 在第 27 行,我们开始使用本章开始时讨论的文件对象方法。...虽然我们只能使用整数从列表中检索条目,但是字典值中的键可以是整数或字符串,比如spam['hello']或spam[42]。字典让我们比列表更灵活地组织程序数据,并且不以任何特定的顺序存储项目。...统计消息中的英文单词数 程序代码的第 24 行到第 27 行定义了getEnglishCount()函数,该函数接受一个字符串参数并返回一个浮点值,该值指示识别的英语单词与总单词的比率。...无论用户输入'd'还是'D',从upper()返回的字符串都会大写为'D'。增加程序可以接受的输入类型的灵活性使它更容易使用。...请注意,任何数字都将 1 及其自身作为其因数,因为 1 乘以一个数字等于该数字。还要注意,24 和 30 的因数列表中有 1、2、3 和 6。

    1.4K50

    Python 自动化指南(繁琐工作自动化)第二版:十一、调试

    for循环应该将total中的值乘以从1到5的数字。但是logging.debug()显示的日志信息显示i变量开始于0而不是1。因为零乘以任何东西都是零,所以剩余的迭代对于total也具有错误的值。...您可以在任何文本编辑器中打开此文本文件,如记事本或“文本编辑”。 Mu 的调试器 调试器是 Mu 编辑器、IDLE 和其他编辑器软件的一个特性,它允许你一次执行一行程序。...在图 11-1 中,调试器在运行第一行代码之前暂停了程序的执行。您可以在文件编辑器中看到突出显示的这一行。...当您单击“调试”按钮时,程序暂停在第 1 行,这是它将要执行的代码行。Mu 应该看起来像图 10-1 。 点击上方的跳过一次,执行第一次print()调用。...持续点击上方的跳过,输入 3 和 42 作为后面两个数字。当调试器到达第 7 行,程序中的最后一个print()调用时,Mu 编辑器窗口应该看起来像图 11-3 。

    1.9K40

    linux shell指令大全整理

    可以获取上一个命令的退出状态。所谓退出状态,就是上一个命令执行后的返回结果。退出状态是一个数字,一般情况下,大部分命令执行成功会返回 0,失败返回 1。...: 单引号里的任何字符都会原样输出,单引号字符串中的变量是无效的; 单引号字串中不能出现单引号(对单引号使用转义符后也不行)。...echo "equal" else echo "no" fi if else-if else 用-gt判断左边的数字是否大于右边的数字, 不是用> -lt判断左边是不是小于右边的 ==判断两数是否相等...-i 0.2–》第一个包和第二个包之间间隔0.2s -w 2 –》只等待2s tr -s替换重复的字符 cut用来从标准输入或文本文件中剪切列或域 #!...代表一个字符 [abcd] 匹配abcd中的任何一个字符 [a-z] 表示范围a-z,中的任何一个字符 管道符 |:把前面命令的结果给后面的命令 arp -n|grep ether|tr -s '

    2K50

    我与C语言二周目邂逅vlog—1.熟悉而又陌生-初识C语言

    如今成为一种高级语言,可谓C生万物 2.编译与链接 C语言代码是放在.c为后缀的文件里,.c为后缀的文件称为源文件,.c本身就是文本文件,无法直接运行,所以要得到最终运行的可执行程序,中间要经过编译和链接两个过程...注意不要写成mian哦 1.main函数是程序的入口 2.main函数有且只有一个 3.一个项目里不管有多少.c文件,但是main函数只能有一个(main函数是程序的入口) 5.2printf...output(标准输入输出)”,所以每个被调用的标准输入输出函数都会通过该头文件里对应的函数声明到库文件(标准库)中找到函数的定义并使用。...6.字符和ASCII码 ASCII里的字符都是以0--127的十进制的数字表示,也叫编号。以编号的二进制存入内存中叫做编码,共128个字符。...下面两种转义可以理解为:字符的8进制或16进制的形式 \ddd:ddd表示1—3个八进制的数字。  如:\130   表示字符X \xdd:dd表示2个十六禁止的数字。

    18210

    笨办法学 Python3 第五版(预览)(二)

    为什么seek(0)不会将current_line设置为 0? 首先,seek()函数处理的是字节,而不是行。代码seek(0)将文件移动到文件中的第 0 字节(第一个字节)。...文件 f 负责在每次 readline() 调用后维护文件中的当前位置,以便继续读取每一行。 文件中的行之间为什么有空行?readline() 函数返回文件中该行末尾的 \n。...6 这个函数的第一件事是从给定的语言文件中读取一行。你以前做过这个,所以这里没有什么新东西。处理文本文件时,就像以前一样只需readline。 8 现在我使用了一些新的东西。...步骤 1: import的回顾 第一步是回顾import的工作方式并进一步发展这方面的知识。花点时间将这段代码输入到一个名为ex26.py的 Python 文件中。...这是《编码游戏》的第一条规则:你写的每一行最终都会成为一系列字节,作为计算机的指令输入,告诉计算机应该做什么。 我怎样才能得到这个输出?

    43410

    Java数组篇:数组的排序和查找

    } } return -1; // 元素未找到,返回-1}使用案例分享假设我们需要对用户输入的一系列数字进行排序,并查找特定的数字。...这段Java代码演示了如何从用户那里接收一系列整数输入,将这些输入存储在数组中,对数组进行排序,然后使用二分查找算法查找用户指定的目标值。...当这段代码执行时,它将首先打印出原始数组,然后是排序后的数组,接着会尝试查找数字4在数组中的位置,并打印出查找结果。...这段代码展示了Java中数组排序和查找的基本操作,这些操作在处理数据集合时非常有用。......文末好啦,以上就是我这期的全部内容,如果有任何疑问,欢迎下方留言哦,咱们下期见。... ...学习不分先后,知识不分多少;事无巨细,当以虚心求教;三人行,必有我师焉!!!

    58721

    用Python实现磁盘IO操作全攻略,让数据流动起来!

    导读:IO在计算机中指的是Input/Output,也就是输入输出。凡是用到数据交换的地方,都会涉及IO编程,例如磁盘、网络的数据传输。...如果参数是0,I/O操作就是无缓冲的,直接将数据写到硬盘上;如果参数是1,I/O操作就是有缓冲的,数据先写到内存里,只有使用flush函数或者close函数才会将数据更新到硬盘;如果参数为大于1的数字则代表缓冲区的大小...(单位是字节),-1(或者是任何负数)代表使用默认缓冲区的大小。...在“>>>”输入f = open(r'c:\text\qiye.txt')后,如果成功打开文本文件,接下来调用read()方法则可以一次性将文件内容全部读到内存中,最后返回的是str类型的对象: >>>...如果文件是文本文件,Python提供了更加合理的做法,调用readline()可以每次读取一行内容,调用readlines()一次读取所有内容并按行返回列表。

    1.5K20

    关于WinExec和System的比较

    注意:第一個參數雖然可用長檔名,但長檔名中如果有空格的話,有時候目的程式執行起來會發生錯誤,發生錯誤的原因是目的程式本身判斷輸入參數時疏忽了長檔名的關係,如果遇到這個情況時,要記得將程式名改為短檔名喔...⑶ 返回值:   若函数调用成功,则返回值大于32,否则为一个小于等于32的错误值。   说明:可以用此函数打开或搜索一个外壳文件夹。...在上述参数中,参数lpStartupInfo是STARTUPINFO结构。可以用来设置控台的标题,新窗口的的初始大小和位置,及重定向标准输入和输出。...可以规定该结构体中的标志,已表明要设置的数据段。有时,不想设置任何信息,也必须传递一个有效的指针给空结构(确定设置大小到cb,及设置dwFlags成员为0)。...其返回值是布尔型的,而真正感兴趣的返回值发生于作为参数传送的结构中(PROCESS_INFORMATION)。CreateProcess返回该结构中的进程ID及其句柄,以及初始线程ID及其句柄。

    1.3K20

    生物信息 awk 简明教程和基本用法

    awk 就是这一类工具中的一个,它依次处理文件中的每一行,并读取里面的每一个字段,对于我们在生信中很多每行格式都相同的文本文件来说,awk 可能是最方便的一个工具,不但可以省去很多不必要的脚本和程序,还可以通过对它的灵活应用...在这个例子中,demo.vcf 是 awk 要处理的文本文件——注意我这里反复强调必须是文本文件,而不是BAM或者.gz这一类非文本文件,如果想用 awk 处理这类文件,那么需要先转换为文本文件才行,...默认情况下,awk 将根据空格和制表符(tab),把每一行自动切分成若干个字段,并在系统里依次用 $1,$2,$3,... 代表第一个字段、第二个字段、第三个字段等等。...请看下面一个例子: $ awk '$6 > 40' demo.vcf 这里只把 demo.vcf 中第六列大于40(也就是质量值>40)的行输出出来。...,只把VCF文件中,质量值大于40的变异的INFO信息 print 出来。

    1.8K50

    Day2 Linux

    1. linux登录与使用1.1 linux是什么?linux和windows、mac一样,是个操作系统。1.2 为什么学生信要用linux?...#后面是注释,就是解释代码的文字。...”家“):直接cd ,效果与cd ~ 一致2.4.4 返回上一级目录:cd ../2.5 vivi 新建脚本或者文本文档(vi是linux中的文本编辑器)cd tmpvi hello_world.txt...先保证电脑切换到了英文输入法,然后敲i键,就可以输入了随便写点啥按Esc键 #退出编辑模式在左下角输入:x ,意思是保存并退出图片2.6 catcat接文本文件的名字,查看并直接将文本文件的内容输出到屏幕...太长的文件一般不看全部,用head 接文本文件名,默认输出前10行,tail 接文本文件名,默认输出后10行,后面加上-n 自定义输出几行,注意-n与head之间有空格,-n与数字之间空格可有可无图片2.7

    14320

    如何在 Vim 中转到特定行?这个操作一定得会!

    在特定行启动 Vim 每当你在 Vim 中打开一个文件时,光标都会在第 1 行。 你可以让 Vim 用你的光标在特定的行打开一个文件。只需键入“vim”,在“+”号后指定行号,然后是文件名。...vim +5 foo.rs 如果您知道特定文件中的总行数,则可以在 Vim 中打开文件时指定一个大于文件中行数的数字,光标将位于最底部的行。...现在,输入任何数字;在我们的例子中,我们想将光标向上移动 10 行,所以输入“10”,然后按“k”键。这会将光标向上移动 10 行。...如果在输入数字“x”后按“j”键(在正常模式下),光标将向下移动“x”行。 跳转到 Vim 中的行号 在您对“x”行有一个确定/模糊的概念的情况下,有两种方法可以将光标移动到“x”行。...如果你想在 Vim 中移动到文本文件的最后一行,'G' 键会将光标移动到文件的最后一行。 默认情况下,当您在 Vim 中打开文件时,光标将位于第一行。

    1.8K00

    哈希函数如何工作 ?

    哈希函数是接受输入(通常是字符串)并生成数字的函数。如果您使用相同的输入多次调用哈希函数,它将始终返回相同的数字,并且返回的数字始终在承诺的范围内。...由于输入可以是任何字符串,但返回的数字在某个承诺的范围内,因此两个不同的输入可能会返回相同的数字。这称为“冲突”,好的哈希函数会尝试尽量减少它们产生的冲突数量。 但完全消除碰撞是不可能的。...如果我们编写一个返回 0 到 7 范围内的数字的哈希函数,并为其提供 9 个唯一输入,则可以保证至少发生 1 次冲突。 为了可视化碰撞,我将使用网格。网格的每个方块将代表哈希函数输出的数字。...如果我们确实决定使用本文开头始终返回 0 的虚拟哈希函数,我们会将所有键值对放入第一个存储桶中。找到任何东西可能意味着我们必须检查哈希映射中的所有值。...为什么所有这些乱码字符串都会散列到相同的数字? 我对 141 万亿个随机字符串进行哈希处理,以找到在使用 murmur3 时哈希到数字 1228476406 的值。

    82030
    领券