相关疑难解决方法(0)

awk 的 nextfile 是在 POSIX 中指定的吗?

GNU awk 手册内容nextfile如下:

注意:多年来,nextfile是一个常见的扩展。2012 年 9 月,它被接受纳入 POSIX 标准。请参阅奥斯汀集团网站

同样,mawk 手册说:

Nextfile 是一个 gawk 扩展(也由 BWK awk 实现),还不是 POSIX 标准的一部分(截至 2012 年 10 月),尽管它已被标准的下一个修订版接受。

是什么让我困惑的是,有没有提到nextfile最新的POSIX规范,从2018。

通过指向 Austin Group 的链接,您会发现该问题已在 2012 年解决(甚至还有最终接受的文本),但仅在 2020 年(!)中应用。

总而言之,这是否意味着nextfile是 POSIX 指定的 awk 功能?或者只会在未来的 POSIX 版本中如此?

(出于实际目的,nextfile也可以在BSD awk 中找到。)

还有两个语句与nextfile: fflushand delete( 的情况相同delete,但已指定,但要扩展以便能够删除整个数组)。

awk posix

12
推荐指数
2
解决办法
697
查看次数

解释删除重复字段行的sed表达式

我正在研究如何在不使用 Bash 中的递归的情况下生成一组数字的所有非重复排列,我发现这个答案有效,但我想了解原因。

假设您有三个数字:1、2、3。

以下命令将生成所有可能的非重复排列:

printf "%s\n" {1,2,3}{1,2,3}{1,2,3} | sort -u | sed '/\(.\).*\1/d'
123
132
213
231
312
321
Run Code Online (Sandbox Code Playgroud)

我理解当参数是集合 {1, 2, 3} 的大括号扩展三倍时printfwith 的%s作用(这将打印每个可能的结果)。

我知道这sort -u只会输出唯一的行。

我知道这sed /<pattern>/d用于删除任何匹配的行<pattern>

读了里面的模式sed,我有些糊涂了。我知道如何阅读,regex但我没有看到这种模式在sed命令中是如何工作的。

\( = literal '('
.  = any character, once
\) = literal ')'
.* = any character, zero or more times
\1 = reference to first captured group
Run Code Online (Sandbox Code Playgroud)

那么该sed命令如何从此regex模式中删除非唯一值?我不明白如何引用一个被捕获的组,而实际上没有一个?在模式中使用括号进行字面匹配?在 …

sed text-processing regular-expression

5
推荐指数
1
解决办法
359
查看次数

标签 统计

awk ×1

posix ×1

regular-expression ×1

sed ×1

text-processing ×1