awk - awk 中的制表符分隔值

标签 awk

如何从制表符分隔的字符串中选择第一列?

# echo "LOAD_SETTLED    LOAD_INIT       2011-01-13 03:50:01" | awk -F'\t' '{print $1}'

上面的代码将返回整行,而不仅仅是预期的“LOAD_SETTLED”。

更新:

我需要更改制表符分隔值中的第三列。 以下内容无效。

echo $line | awk 'BEGIN { -v var="$mycol_new" FS = "[ \t]+" } ; { print $1 $2 var $4 $5 $6 $7 $8 $9 }' >> /pdump/temp.txt

但是,如果分隔符是逗号而不是制表符,则这会按预期工作。

echo $line | awk -v var="$mycol_new" -F'\t' '{print $1 "," $2 "," var "," $4 "," $5 "," $6 "," $7 "," $8 "," $9 "}' >> /pdump/temp.txt

最佳答案

您需要将OFS变量(输出字段分隔符)设置为制表符:

echo "$line" | 
awk -v var="$mycol_new" -F'\t' 'BEGIN {OFS = FS} {$3 = var; print}'

(确保在 echo 语句中引用 $line 变量)

关于awk - awk 中的制表符分隔值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5374239/

相关文章:

BASH - 根据条件将文件拆分为多个文件

bash - nawk 将列添加到每一行

bash - 将文本文件中的行分组并将相应的行聚合到列

linux - 通过管道传输到 awk 的 Bash 命令有时会被缓冲

linux - 需要搜索模式并打印其下一个值

bash - 根据行结构拆分文件夹中的所有文件

linux - 使用 sed/awk 按列修改文本

bash - Shell脚本将矩形文本旋转45°

csv - 使用 AWK 但从第二列开始将逗号分隔值转换为行

awk - FFMPEG 使用 MSVC 在 Windows 上构建 - 制作失败