【问题标题】:awk + remove all not uniq lines except the first line uniq (FILE NAME)awk + ​​删除除第一行 uniq (FILE NAME) 之外的所有非 uniq 行
【发布时间】:2011-03-10 22:11:26
【问题描述】:

嗨,我有以下文件如何通过 sed 删除除第一个 uniq 文件名之外的所有文件名行例如需要从文件中删除除第一个文件名之外的所有文件名行:

FILE NAME: /dir1/dir2/dir3/dir4/dir5/file
FILE NAME: /dirA/dirB/dirC/dirD/dirE/file

文件:

FILE NAME: /dir1/dir2/dir3/dir4/dir5/file
PARAMETER NAME: blablabla
TARGET FILE: 12
SOURCE FILE: 565
FILE NAME: /dir1/dir2/dir3/dir4/dir5/file
PARAMETER NAME: blablabla
TARGET FILE: 18
SOURCE FILE: 552
FILE NAME: /dir1/dir2/dir3/dir4/dir5/file
PARAMETER NAME: blablabla
TARGET FILE: 14
SOURCE FILE: 559
FILE NAME: /dirA/dirB/dirC/dirD/dirE/file
PARAMETER NAME: blablabla
TARGET FILE: 134
SOURCE FILE: 344
FILE NAME: /dirA/dirB/dirC/dirD/dirE/file
PARAMETER NAME: blablabla
TARGET FILE: 13
SOURCE FILE: 445
FILE NAME: /dirA/dirB/dirC/dirD/dirE/file
PARAMETER NAME: blablabla
TARGET FILE: 13
SOURCE FILE: 434

【问题讨论】:

  • 请将代码和数据缩进4个空格;然后,您不需要在连续行之间有一个空行。在 Markdown 编辑器中,“二进制”按钮(上面带有“101010”符号)缩进选定的行。

标签: scripting sed awk


【解决方案1】:

如果您只想要唯一的文件名行,例如为您展示的示例列出的两行,

grep "^FILE NAME" input.txt |排序 |独一无二的


更新:
我不确定你真正想要什么。
sort | uniq 过滤器将获取所有以"^FILE NAME" 开头的行的唯一路径名。如果您的示例输入和输出不正确,您可能需要使用 edit 按钮进行更正。

【讨论】:

    【解决方案2】:

    在 awk 中,问题标记为:

    awk '$0  ~ /^FILE NAME: / { if (count++ == 0) print; }
         $0 !~ /^FILE NAME: / {                   print; }'
    

    你可能可以用sed 做到这一点,但它不是特别干净。


    评论稍微澄清了这个问题。答案非常相似,尽管区别很重要:

    awk '$0  ~ /^FILE NAME: / { if (count[$0]++ == 0) print; }
         $0 !~ /^FILE NAME: / {                       print; }'
    

    我仍然假设您想要所有其他行 - 示例输出仅显示“文件名”行,但问题没有说明删除其他行。显然,如果您不想要其他行,请删除 awk 脚本的第二行。

    【讨论】:

    • 它不好,因为它还删除了文件名:/dirA/dirB/dirC/dirD/dirE/file 行?耶尔
    【解决方案3】:

    您可以在 AWK 中使用关联数组,如果一行包含“文件名”,请检查它是否在数组中。如果是,则不要打印它。如果不是,则将其保存在数组中并打印。对于任何不包含“文件名”的行,打印出来。

    【讨论】:

    • 请给我那个 THX 的例子
    猜你喜欢
    • 2011-03-10
    • 1970-01-01
    • 2010-09-27
    • 1970-01-01
    • 1970-01-01
    • 2012-09-22
    • 1970-01-01
    • 1970-01-01
    • 2020-04-14
    相关资源
    最近更新 更多