https://stackoverflow.com/questions/5374239/tab-separated-values-in-awk#comment23678233_5376527 复制了确切的代码。
echo "$line"
将返回
LOAD_SETTLED LOAD_INIT 2011-01-13 03:50:01
现在
echo "$line" | awk '{print $1}'
返回 LOAD_SETTLEDecho "LOAD_SETTLED LOAD_INIT 2011-01-13 03:50:01" | awk '{print $1}'
返回 LOAD_SETTLEDecho "$line" | awk -v FS='\t' -v OFS='\t' 'BEGIN {OFS = FS} {$3 = var; print}'
返回整行。echo "$line" | awk -v var="$mycol_new" -F'\t' 'BEGIN {OFS = FS} {$3 = var; print}'
返回整行。
笔记:全线> LOAD_SETTLED LOAD_INIT 2011-01-13 03:50:01
根据上下文,我只应该期待LOAD_SETTLED
,我哪里出错了?
我不确定我复制的制表符分隔符是什么。由于 Ctrl + Tab 是 PowerShell 中切换终端选项卡,我不知道如何在 WSL 中插入选项卡手册。我复制了问题中的 $line 。
是的,也许echo
不适合它。
printf "LOAD_SETTLED\tLOAD_INIT\t2011-01-13 03:50:01\n" | awk -v FS='\t' -v OFS='\t' 'BEGIN {OFS = FS} {$3 = var; print}'
返回:
LOAD_SETTLED LOAD_INIT
printf "LOAD_SETTLED\tLOAD_INIT\t2011-01-13 03:50:01\n" | awk -v var="$mycol_new" -F'\t' 'BEGIN {OFS = FS} {$3 = var; print}'
返回:
LOAD_SETTLED LOAD_INIT
我应该只期望LOAD_SETTLED
,为什么现在返回两个字段。
原本的回答是从制表符分隔的字符串中获取第一列。我尝试复制以获得第一列。但现在我得到**两列**。这就是我的困惑。
更新:问题已解决。我的错。
答案1
可能 echo 不是用于此目的的正确工具,请尝试这个
printf "LOAD_SETTLED\tLOAD_INIT\t2011-01-13 03:50:01\n"|awk '{print $1}'