【问题标题】:How to filter a sets of paths to avoid repeat them using AWK?如何过滤一组路径以避免使用 AWK 重复它们?
【发布时间】:2019-01-09 00:11:38
【问题描述】:

有没有办法从列表中获取最后一个完整路径和 避开中间部分,只走长路而不是 开头和中心部分?

输入:

Data
Output
Output\Results
Output\Results\head
Output\Results\head\main
Output\Results\footer

输出:

Data
Output\Results\head\main
Output\Results\footer

【问题讨论】:

  • 你想要的输出有点混乱。为什么第二行是Output\Results\head\main,而不是Output\Results\head\main\index.html
  • 你是对的,因为我只是获取路径,所以我删除了 index.html

标签: regex shell awk sed


【解决方案1】:

正如@tshiono 在上面的评论中指出的那样,您的要求有些模糊......如果订单很重要,我的解决方案不会为您工作。

$ cat file
Data
Output
Output\Results
Output\Results\head
Output\Results\head\main\index.html
Output\Results\footer

还有点尴尬awk

$ <file LC_ALL=C sort | awk 'BEGIN{x=""} {split( $0, a, "\\" );b=a[1]; for(i=2; i<=length(a) ; i++) {if(a[i]!~/\./){b=b "\\" a[i]};$0=b}; ; if(!index($0,x)){print x};x=$0}END{print x'
Data
Output\Results\footer
Output\Results\head\main

编辑 1: 更改后的输入大大简化了 awk(而原来的仍然有效):

<file LC_ALL=C sort | awk 'BEGIN{x=""} {if(!index($0,x)){print x};x=$0}END{print x}'
Data
Output\Results\footer
Output\Results\head\main

【讨论】:

  • 因为我只是获取路径,所以我删除了 index.html
  • 那么 - 它(原始版本或新的缩短版本)是否符合您的需求?
猜你喜欢
  • 2018-10-15
  • 2010-09-13
  • 1970-01-01
  • 2023-03-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-03-11
  • 1970-01-01
相关资源
最近更新 更多