如何在awk命令中忽略空格

时间:2017-02-19 13:42:06

标签: bash shell unix awk posix

我有一个文件user_list.txt,它有一个由“,”分隔的4个字段的表。例如,

hi,hello,good morning,bye.

我正在使用以下命令提取第三列字段。

output=$(awk 'BEGIN { FS = "," } ; { print $3 }' user_list.txt) 

当我尝试检查输出变量的内容时,

echo ${output[0]} --> good
echo ${output[1]} --> morning

我希望它是一个字符串 echo ${output[0]} --> good morning,但由于空格是默认分隔符,因此正在拆分字符串。

请帮忙。

3 个答案:

答案 0 :(得分:1)

在bash中,读取数组输入的的命令是mapfile

mapfile -t output < <(awk -F, '{print $3}' user_list.txt) 

for element in "${output[@]}"    # <= the quotes are crucial here
do
    echo "have: $element"
done

如果您的输入文件只是一行,请使用cut

output=$(cut -f, -d3 user_list.txt)
echo "have: $output"

答案 1 :(得分:0)

这可以通过以下命令实现。将my_dict = {k: tuple(v) for k, v in my_dict.items()} 视为输入文件。

user_list.txt

答案 2 :(得分:0)

像往常一样,当你提供一小部分更大的图片时,很难正确回答。看来你想用bash中的第三列中的值做一些事情,所以简单的循环有什么问题:

while IFS=, read -r _ _ item _
do
  <do stuff with $item here>
done<user_list.txt

当然我可能错了,因为问题设计得很差,难以提出实际答案