Bash:如何忽略“”之间的分隔符?

Bash: How can I cut ignoring the delimiters found in between " "?

考虑以下文件

col1 col2 col3 col4 col5
3 5 "Hello World" 2 8
20 NA "Alice" 1 6
1 1 "A B C" 1 154

我想要 select 前三列。预期输出为

col1 col2 col3
3 5 "Hello World"
20 NA "Alice"
1 1 "A B C"

我天真地试过了

$cut -d" " -f -3 myFile.txt
col1 col2 col3
3 5 "Hello
20 NA "Alice"
1 1 "A

由于 " " 之间的空格,我遇到了困难。如何忽略 " " 之间的分隔符?

可能不是最优雅的解决方案,但这是我想到的

cat myfile | awk '
{
    split([=10=], chars, "")
    nbQuotes=0
    nbColumns=1
    for (i=1 ; i <= length([=10=]); i++)
    {
        if (chars[i] == "\"")
        {
            nbQuotes++
        } else
        {
            if (nbQuotes%2 == 0)
            {
                if (chars[i] == " ")
                {
                    nbColumns++
                }
            }
        }
        if (nbColumns > 3)
        {
            break
        }
        printf chars[i]
    }
    print ""
}
'

col1 col2 col3
3 5 "Hello World"
20 NA "Alice"
1 1 "A B C"