【问题标题】:How to parse multiline file and do some operation for each token line in bash?如何解析多行文件并对bash中的每个标记行进行一些操作?
【发布时间】:2013-06-11 00:13:03
【问题描述】:

假设我们有一个 tsv 文件

1    2    3
1    2    3

我们想为每个 tsv 文件行做一些操作,比如 echo $1 $2 $3

如何在 bash 中做这样的事情?

【问题讨论】:

    标签: bash tsv


    【解决方案1】:

    这样就可以了:

    while read -r a b c
    do
       echo "first = $a second = $b third = $c"
    done < file
    

    测试

    $ while read -r a b c; do echo "first=$a second=$b third=$c"; done < file
    first=1 second=2 third=3
    first=1 second=2 third=3
    

    由于分隔符是一个制表符,您不需要使用IFS。例如,如果它是 |,您可以这样做:

    $ cat file
    1|2|3
    1|2|3
    $ while IFS='|' read -r a b c; do echo "first=$a second=$b third=$c"; done < file
    first=1 second=2 third=3
    first=1 second=2 third=3
    

    【讨论】:

    • 你可能应该设置 IFS 以防数据可能包含空格。
    • 好吧,如果它包含空格,那么它们将被视为不同的参数。
    猜你喜欢
    • 2010-11-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-06-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多