首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

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

了解如何在不排序或更改其顺序的情况下使用awk'!visited $ 0 ++'。 [jb0vbus7u0.png] 假设您有一个文本文件,并且需要删除它的所有重复行。...摘要 要删除重复的行,同时保留它们在文件中的顺序,请使用: awk '!...对于文件的每一行,如果行出现次数为零,则将其增加一并打印该行,否则,它仅增加出现次数而无需打印该行。 我对awk并不熟悉,所以我想了解它是如何通过这么短的脚本来实现这一点的。...1 abc 2 ghi 4 def 5 xyz 8 klm 最后,cut-f2从第二列开始打印到结束(-f2-选项: 注意-后缀,指示其包括其余的行)。...abc ghi def xyz klm 参考资料 Gnu awk 用户指南 awk 中的数组 Awk真值 Awk 表达式 如何在Unix中删除文件中的重复行? 删除重复行而不排序 awk '!

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

    linux中删除文件的最后N行小总结

    现在,假设我们要从rumenz.txt文件中删除最后三行 ( n=3 ) 。...-n选项(例如-n -x来打印文件中除最后x行之外的所有行 因此,我们可以使用此选项以直接的方式解决我们的问题: $ head -n -3 rumenz.txt 1 rumenz.com 2 rumenz...在第一遍中,它会找出文件中的总行数,在第二遍中,我们打印我们想要保留的那些行: $ awk -v n=3 'NR==FNR{total=NR;next} FNR==total-n+1{exit} 1'...在这个过程中,awk命令将当前行号保存到一个名为total的变量中。第一遍后,total变量保存了输入文件中的总行数 FNR==total-n+1{exit} 1:这是第二遍。...如果FNR==total-n+1,则表示我们已经到达需要删除的第一行,因此我们退出。否则,我们只打印该行。在这里非零数字1``true 并触发awk的默认操作

    7.8K10

    如何优雅地将printf的打印保存在文件中?

    我们都知道,一般使用printf的打印都会直接打印在终端,如果想要保存在文件里呢?我想你可能想到的是重定向。...不过文本介绍了不是通过命令行的方式,而是通过代码实现。 写文件 你可能会想,那不用printf,直接将打印写入到文件不就可以了?...但是本文并不是说明如何实现一个logging功能,而是如何将printf的原始打印保存在文件中。...: $ tty /dev/pts/0 所以如果我们要将printf的打印保存到文件中,实际上就让它重定向到这个文件就可以了。...有些后台进程有自己的日志记录方式,而不想让printf的信息打印在终端,因此可能会关闭。 总结 文本旨在通过将printf的打印保存在文件中来介绍重定向,以及0,1,2文件描述符。

    10.1K31

    ExcelVBA学习之一键打印文件夹中的所有Excel文件

    【问题】要打印的Excel文件有几百个,格式有2003版本的也有2016版本的,全部都打印第一个sheet1工作表就可以啦,(如果所在的sheet工作都要打印呢?)。...==要在代码中调整文件夹版本== Sub 批量打印()    ‘本方法不要把“控制文件.xlsm”放在要打印的文件夹里,       Dim file$, folder$, wb As Workbook...      folder = "G:\test\" ‘在这里调整你要打印的文件夹       file = Dir(folder & "*.xls*")       Do While file ...             wb.Worksheets(1).PrintOut wb.Close SaveChanges:=False  file = Dir  Loop End Sub ==本方法要把主控制文件放在文件夹中...   myFile = Dir(myPath & "*.xls*") '依次找寻指定路径中的*.xls文件    C = "sheet1"  ’要打印的工作表的名称    t = Timer    Do

    2.9K20

    vi中跳到文件的第一行和最后一行

    由于vi编辑器不能使用鼠标,所以一个大文件如果要到最后一行只用键盘下键的话会是一个很痛苦的过程,还好有各种比较快捷的方法归我们使用: 1. vi 编辑器中跳到文件的第一行:    a 输入 :0 或者...:1 回车    b 键盘按下 小写 gg 2.vi 编辑器跳到文件最后一行:    a 输入 :$ 回车    b 键盘按下大写 G    c 键盘按 shift + g (其实和第二种方法一样...) Vim快速移动光标至行首和行尾 1、 需要按行快速移动光标时,可以使用键盘上的编辑键Home,快速将光标移动至当前行的行首。...2、 如果要快速移动光标至当前行的行尾,可以使用编辑键End。也可以在命令模式中使用快捷键””(Shift+4)。与快捷键”^”和0不同,快捷键””前可以加上数字表示移动的行数。...例如使用”1”表示当前行的行尾,”2”表示当前行的下一行的行尾。

    10.6K40

    awk命令整理

    *$3)} 2、{printf(“%-8s $%6.2f\n”,$1,$2*$3)} 排序输出 例如:假设要打印每位员工的所有数据,包括他或她的薪酬,并以薪酬递增的方式进行排序输出,最简单的方式是使用awk...rate is below minion wage”}’ emp.data #打印字段数小于3.35的行 BEGIN/END 特殊模式BEGIN用于匹配第一个输入文件的第一行之前的位置,END则用于匹配处理过的最后一个文件的最后一行之后的位置...最后END动作打印出names的值 awk程序中,连接操作的表现形式是将字符串值一个接一个地写出来,对于每个输入行,程序的第一个语句先连接三个字符串:names的前一个值、当前行的第一个字段以及一个空格...),因此这个程序中的names不需要显示初始化 打印最后一个输入行 [root@master text]# awk ‘{last = $0} END {print last}’ emp.data Susie...数组 awk为存储一组相关的值提供了数组。虽然数组给予了awk很强的能力,但在这里我们仅展示一个简单的例子。如下程序将按行逆序打印输入。

    85630

    使用awk和正则表达式过滤文件中的文本或字符串

    awk 的一般语法是 # awk 'script' filename script可以理解的一组命令awk 并在文件,文件名上执行。...它的工作原理是读取文件中的给定行,制作该行的副本,然后在该行上执行脚本。这在文件中的所有行上重复。...使用 awk 的一个简单示例: 下面的示例打印/etc/hosts文件中的所有行,因为没有给出模式。...[ character(s) ] 一起使用 以 set 为例[al1],这里 awk 将匹配文件中包含字符a或l或1在一行中的所有字符串/etc/hosts. # awk '/[al1]/{print...在下面的示例中,第一个命令打印出文件中的所有行,第二个命令不打印任何内容,因为我想匹配具有 $25.00,但没有使用转义字符。 第三个命令是正确的,因为已使用转义字符读取 $ 照原样。

    2.3K10

    Shell实用工具

    示例: 打印匹配行中第7列数据 搜索passwd文件有root关键字的所有行, 然后以":"拆分并打印输出第7列 awk -F: '/root/{print $7}' passwd # -F: 以':'...示例: 打印文件每行属性信息 统计passwd: 文件名,每行的行号,每行的列数,对应的完整行内容: awk -F ':' '{print "文件名:" FILENAME ",行号:" NR ",列数...示例: 打印最后1列 按照":" 分割查询最后一列打印输出 awk -F: '{print $NF}' passwd ?...截取某个文件中的列, 重点是按照列分割, 这个命令不适合截取文件中有多个空白字符的字段 sed: 增删改查数据. sed用于在文件中以行来截取数据进行增删改查 awk:截取分析数据....-f 排序时,将小写字母视为大写字母 -b 忽略每行前面开始出的空格字符 -o 输出文件 将排序后的结果存入指定的文件 -u 意味着是唯一的(unique),输出的结果是去完重了的 -m 将几个排序好的文件进行合并

    7.9K10

    shell -- AWK&文本处理 浅析

    output:1 2 3 4 abc awk '{print $5}' 1.demo output:abc awk 基础: 1、原样输出 是通过动作中的双引号控制的,demo:awk '{print...)、grep (产看匹配到的文本,当然了grep 可不仅仅只是查看个文本) sort: sort将文件的每一行作为一个单位,相互比较,比较原则是从首字符向后,依次按ASCII码值进行比较,最后将他们按升序输出...常用参数: -u : unique 唯一,排序并且排除重复项 -r : reverse 反向排序 -o : output 将排序结果输出到源文件 -n : number 安装数字进行排序,默认数字会被当作字符串进行比较...comm 的输出通常有三列:1、file1 特有的。2、file2特有的 3、都有的 所以我们可以这么用: 交集:打印出两个文件所共有的行。 求差:打印出指定文件所包含的且不相同的行。...差集:打印出包含在一个文件中,但不包含在其他指定文件中的行。

    64620

    编程小技巧之 Linux 文本处理命令

    日志文件处理数据 在工作中,我们往往需要对一些具有固定格式的文件进行信息统计,比如说根据 nginx 的 access.log 文件数据,计算出每个后端 API 接口的调用次数,并且排序。...在这条命令中 | 符号将 cat 命令的输出指向到 awk 命令的输入中。 awk 是贝尔实验室 1977 年搞出来的文本流处理工具,用于对具有固定格式的文件进行流处理。...-k N 指定按第N列排序,默认是第一个值 sort -nr Access.log # 按照数值逆序排序 最后一个命令是 uniq,它用于消除重复行,或者统计。...awk 的命令内容,而 ""中是打印的纯文本,所以我们可以将需要补充的 SQL 命令打印出来。...最后一个命令时 grep,它是文本搜索命令,它可以搜索文本内容的关键词。 grep remcarpediem file # 将 file 文件中的带有 remcarpediem 关键词的行。

    67820

    统计文件中出现的单词次数

    该操作块是在文件输入之前执行的,也就是不需要输入任何文件数据,也能执行该模块。 BEGIN模块常用于设置修改内置变量如(OFS,RS,FS等),为用户自定义的变量赋初始值或者打印标题信息等。...awk每接收文件的一行,然后执行相应的命令来处理。...利用管道组成的一条命令) 写一个shell脚本,查找kevin.txt文本中n个出现频率最高的单词,输出结果需要显示单词出现的次数,并按照次数从大到小排序。...分为以下几步: 1)将文本文件以一行一个单词的形式显示出来; 2)将单词中的大写字母转化成小写字母,即Word和word认为一个单词; 3)对单词进行排序; 4)对排序好的单词列表统计每个单词出现的次数...; 5)最后显示单词列表的前n项。

    3.8K111

    编程小技巧之 Linux 文本处理命令

    日志文件处理数据 在工作中,我们往往需要对一些具有固定格式的文件进行信息统计,比如说根据 nginx 的 access.log 文件数据,计算出每个后端 API 接口的调用次数,并且排序。...在这条命令中 | 符号将 cat 命令的输出指向到 awk 命令的输入中。 awk 是贝尔实验室 1977 年搞出来的文本流处理工具,用于对具有固定格式的文件进行流处理。...-k N 指定按第N列排序,默认是第一个值 sort -nr Access.log # 按照数值逆序排序 最后一个命令是 uniq,它用于消除重复行,或者统计。...awk 的命令内容,而 ""中是打印的纯文本,所以我们可以将需要补充的 SQL 命令打印出来。...最后一个命令时 grep,它是文本搜索命令,它可以搜索文本内容的关键词。 grep remcarpediem file# 将 file 文件中的带有 remcarpediem 关键词的行。

    61710

    编程小技巧之 Linux 文本处理命令

    日志文件捞数据 在工作中,我们往往需要对一些具有固定格式的文件进行信息统计,比如说根据 nginx 的 access.log 文件数据,计算出每个后端 API 接口的调用次数,并且排序。...在这条命令中 | 符号将 cat 命令的输出指向到 awk 命令的输入中。 awk 是贝尔实验室 1977 年搞出来的文本流处理工具,用于对具有固定格式的文件进行流处理。...-k N 指定按第N列排序,默认是第一个值 sort -nr Access.log # 按照数值逆序排序 最后一个命令是 uniq,它用于消除重复行,或者统计。...的命令内容,而""中是打印的纯文本,所以我们可以将需要补充的 SQL 命令打印出来。...最后一个命令时 grep,它是文本搜索命令,它可以搜索文本内容的关键词。 grep remcarpediem file # 将 file 文件中的带有 remcarpediem 关键词的行。

    59200
    领券