【问题标题】:File name in awk after PIPE管道后 awk 中的文件名
【发布时间】:2020-09-29 11:38:46
【问题描述】:

每个结果行之后的文件名

awk '/Select User File/,/\*\*/' "{}"/* | grep "Rule" | sed 's/ //g' | sort -u

给我输出

Rule 123
Rule asd
Rule asdklnj

我想在每行末尾附加FILENAME

不知道如何获取管道后的文件名

【问题讨论】:

  • 如果您使用的是gawk,请使用FILENAME变量

标签: python file unix awk


【解决方案1】:

你不需要在管道之后得到它。只需将其放在awk 命令中即可。

awk '/Select User File/,/\*\*/ {print $0 FILENAME}' "{}"/* | grep "Rule" | sed 's/ //g' | sort -u

grepsed也不需要使用,awk自己就可以了。

awk '/Select User File/,/\*\*/ && /Rule/ {gsub(" ", ""); print $0, FILENAME}' "{}"/* | sort -u

【讨论】:

  • 第一种方法将删除文件名中的潜在空格
【解决方案2】:

恕我直言,我们可以在单个 awk 本身中执行此操作,或者我们可以减少您尝试中的命令,因为没有给出示例然后尝试自行修复 OP 的尝试,请尝试关注。

awk '/Select User File/,/\*\*/{gsub(/ /,"");print $0,FILENAME}' "{}"/* | grep "Rule" | sort -u

【讨论】:

    猜你喜欢
    • 2017-02-12
    • 2018-04-15
    • 2012-05-02
    • 2013-02-26
    • 2017-04-23
    • 2015-01-08
    • 1970-01-01
    • 1970-01-01
    • 2014-03-18
    相关资源
    最近更新 更多