注意:多年来,
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
: fflush
and delete
( 的情况相同delete
,但已指定,但要扩展以便能够删除整个数组)。
我正在研究如何在不使用 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} 的大括号扩展三倍时printf
with 的%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
模式中删除非唯一值?我不明白如何引用一个被捕获的组,而实际上没有一个?在模式中使用括号进行字面匹配?在 …