linux - 奇怪的 awk 输出包含空格

标签 linux awk gawk

为什么我会得到那些奇怪的空格?

echo "hello world" | awk 'BEGIN{FS=""} {$1=toupper($1); printf "%s\n", $0}'

我用更简单的方法得到了相同的结果。

echo "hello world" | awk 'BEGIN{FS=""} {$1=toupper($1); print}'

输出:

H e l l o   w o r l d

最佳答案

将字段分隔符设置为空字符串具有特殊意义:它将每个单个字符读入一个单独的字段。由于输出字段分隔符 OFS 未更改(空白),您的分配重新排列完整记录并在每个字段之间插入 OFS

第一个字段/字符大写。

你的第一个和第二个方法是等价的,因为 print 默认为 print $0,而 printf "%s\n", $0 是等价的打印 $0

关于linux - 奇怪的 awk 输出包含空格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50497678/

相关文章:

bash - AWK:将脚本输出从脚本重定向到另一个具有动态名称的文件

linux - 删除重复行但保留前 2 个实例

c - 无法理解linux的 "Kill"程序

python - 如何用python调用 'read'系统调用

linux - 在一行中调用多行 (G)AWK 程序

Linux 在两个实例之间找到部分并将它们写入多个输出

awk - 使用该列的最大值标准化列数据

linux - 如何在shell脚本中将时间命令的输出定向到文件?

c - 在带有 busybox 的嵌入式 linux 上使用 system() 时,SIGHUP 信号处理程序重置为默认值

linux - AWK : matching two files by first column doesn't work