当前位置:  开发笔记 > 编程语言 > 正文

使用awk在shell脚本中按选项卡拆分字符串不起作用

如何解决《使用awk在shell脚本中按选项卡拆分字符串不起作用》经验,为你挑选了1个好方法。

我有一个以下格式的文本文件:

Name           Place     Mobile
Jon Sam        India     1234567890
Barack Obama   USA       0987654321

每个字段由制表符空格分隔.我想通过shell脚本提取每个字段.我使用以下代码:

while IFS= read -r var; do 
    echo $var | awk -F"\t" '{print $1,"->"$2,"->"$3}'
done < myfile

我期待以下风格的输出:

Jon Sam->India->1234567890

但它打印如下:

Jon Sam India 1234567890-> ->

这意味着,不会发生分裂.我的计划有什么问题?



1> ghoti..:

当你在bash中拥有完美的格式化工具时,使用awk进行格式化似乎很浪费.

while IFS=$'\t' read -r var1 var2 var3; do
    printf "%s->%s->%s\n" "$var1" "$var2" "$var3"
done < myfile

或者,如果你真的想在事后拆分这条线:

while IFS= read -r line; do
    IFS=$'\t' read -r -a arr <<<"$line"
    printf "%s->%s->%s\n" "${arr[@]}"
done < myfile

当然,awk毫不费力地做了这样的事情:

awk -F"\t" '{ printf "%s->%s->%s\n",$1,$2,$3 } ' myfile

甚至

awk -F"\t" -v OFS="->" '{ $1=$1 } 1' myfile

推荐阅读
小白也坚强_177
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有