很抱歉,这个愚蠢的问题已被搜索,但不确定是否找到了正确的答案,因此默认分隔符仅是awk的空间?
这是适用于 所有主要Awk实现* 的 实用摘要 : *
gawk
) -默认awk
在 一些 Linux发行版mawk
) -默认awk
在 一些 Linux发行版(例如,早期版本的Ubuntu的crysman报道称,版本19.04现在带有 GNU awk中-见下面他的评论)awk
类似BSD的平台(包括OSX)上的默认设置在Linux上,awk -W version
将告诉您默认的实现awk
。
BSD awk中 仅 理解awk --version
(其GNU awk中理解 除了 对awk -W version
)。
所有 这些实现的最新版本 均
遵循POSIX标准,涉及
字段 分隔符
[1](但不包含 记录 分隔符)。
词汇表:
RS
是 输入 记录 分隔符,它描述 如何将输入分解为 记录 :
\n
下面; 也就是说, 默认情况下 , 输入被分成几 行 。awk
的命令行上,RS
可以指定为-v RS=<sep>
。RS
到一个 文字,单字符 的值,但GNU awk和支撑Mawk 多字符 值可以被 扩展正则表达式 (BSD awk并 不 支持)。FS
是 输入 字段 分隔符,它描述如何将 每个记录 拆分为多个 字段 ;它可能是 扩展的正则表达式 。
在awk
的命令行上,FS
可以指定为-F <sep>
(或-v FS=<sep>
)。
0x20
),但空间不是 字面 解释为(只)分离器,但有 特殊的意义 ; 见下文。默认情况下 :
POSIX规范。对空格和制表符使用抽象<blank>
,这对于
所有 语言环境都是正确的,但是 可以 在特定语言环境中包含 其他 字符-我不知道是否存在任何此类语言环境。
请注意, 使用默认的输入记录分隔符 (RS
)时\n
, 换行符 通常 不将图片输入为字段分隔符,因为在这种情况下, 记录
本身不 包含\n
在内。
换行符作为字段分隔符 确实 起作用,但是:
RS
设置为一个值,该值导致记录 本身 包含\n
实例(例如,when RS
设置为 空字符串 ;请参见下文)。split()
函数将字符串拆分为没有显式字段分隔符参数的数组元素时。
\n
实例(如果默认设置RS
有效),该split()
函数在调用时也不会在 来自不同源 的 多行字符串 上使用显式的字段分隔符作为参数(例如,通过-v
option或as 传递的变量)伪文件名) 始终 视为\n
字段分隔符。重要的非默认注意事项 :
分配 空 字符串RS
具有特殊的意义:它读取输入 段落模式 ,这意味着输入被分成记录 的运行 非空行 ,用 开头和结尾的忽略空行运行 。
当你 指定的任何 其他 不是 字面 空间FS
,该 解释FS
的变化从根本上 :
FS
为 有效地 等于一个空格,也会将每个记录中的每个 单独的 空格实例都视为字段分隔符。[ ]
+
必须使用正则表达式量词(重复符号);例如,[\t]+
将标签的 运行 识别为单个分隔符。FS
为 空字符串 意味着记录的 每个 字符 都是 其自己的字段 。RS
将设置为 空字符串 (段落模式),则 换行符 (\n
) 也将 视为字段分隔符,而与的值无关FS
。[1]不幸的是,当您使用该选项强制执行POSIX合规性()时,GNU Awk至少版本4.1.3符合关于字段分隔符的 过时
POSIX标准,-P
(--posix
):该选项有效且RS
设置 为非空 值,换行符(\n
实例)不识别为字段分隔符。GNU
Awk手册阐明了过时的行为(但是忽略了将其RS
设置为 空
字符串时不适用的行为)。POSIX标准在2008年进行了更改(请参阅注释),以在具有默认值时 也 考虑 换行符 字段分隔符FS
-因为GNU
Awk始终 不使用 -P
(--posix
)。
以下是验证上述行为2个命令:
使用-P
在效果和RS
设置到 空字符串 ,\n
则 仍 视为字段分隔符:
gawk -P -F' ' -v RS='' '{ printf "<%s>, <%s>\n", $1, $2 }' <<< $'a\nb'
使用-P
在效果和 非空 RS
,\n
不被视为一个字段分隔符-这是过时的行为:根据GNU Awk的维护者的说法,
gawk -P -F' ' -v RS='|' '{ printf "<%s>, <%s>\n", $1, $2 }' <<< $'a\nb'
修复程序即将到来 ;期望在 4.2 版中使用(未提供时间范围)。
(向@JohnKugelman和@EdMorton表示帮助)。
本文向大家介绍awk OFS-输出字段分隔符,包括了awk OFS-输出字段分隔符的使用技巧和注意事项,需要的朋友参考一下 示例 由awk用来分隔print语句输出的字段。例如: 产生: 默认值为,由单个空格组成的字符串。
问题内容: 我有一个csv文件,数据显示如下 我正在尝试将第一列保存到新文件(不包含字段分隔符,然后从主csv文件中删除第一列以及第一个字段分隔符。 有任何想法吗? 到目前为止,这是我尝试过的 但这不起作用 问题答案: 假设您的原始CSV文件名为“ orig.csv”:
本文向大家介绍awk RS-记录分隔符,包括了awk RS-记录分隔符的使用技巧和注意事项,需要的朋友参考一下 示例 由awk用于将输入拆分为多个记录。例如: 产生: 默认情况下,记录分隔符是换行符。 同样:echo“ abc | de f” | awk'BEGIN {RS =“ |”} {print $2}' 产生:
尽管已将pcs区域分隔符更改为“.”Netbeans 12仍在使用“,”。我已经尝试将以下内容添加到netbeans中。conf文件,但它不起作用: -J-Duser.language=en-J-Duser.country=US 如何通过conf文件强制netbeans使用特定的本地文件?
问题内容: 我在设置Avro字段的默认值时遇到了一些问题。我有一个简单的架构,如下所示: data.avsc: 我正在使用 avro-maven-plugin v1.7.6 生成Java模型。 当我使用:创建模型的实例时 ,它会失败并出现以下异常: org.apache.avro.AvroRuntimeException:org.apache.avro.AvroRuntimeException:字
我在设置Avro字段的默认值时遇到了一些问题。我有一个简单的模式,如下所示: 数据avsc: 我使用的是avro maven插件v1。7.6生成Java模型。 当我使用:创建模型的实例时,它会失败,但有一个异常: org.apache.avro.AvroRuntimeExc0019:org.apache.avro.AvroRuntimeExc0019:字段id类型: UNION pos: 0未设置