我有一个逗号分隔的列表......
00:00:00:00:00:00,Bob's Laptop,11111111111111111
00:00:00:00:00:00,Mom & Dad's Computer,22222222222222222
00:00:00:00:00:00,Kitchen,33333333333333333
我正在尝试遍历这些行并使用每行中的3列填充变量。当数据没有空格,&符号或撇号时,我的脚本可以正常工作。当它确实有那些然后它不能正常工作。这是我的剧本:
for line in $(cat list)
do
arr=(`echo $line | tr "," "\n"`)
echo "Field1: ${arr[0]}"
echo "Field2: ${arr[1]}"
echo "Field3: ${arr[2]}"
done
如果你们中的一位bash大师可以指出我如何让这个脚本与我的列表一起工作,我将非常感激!
EV
答案 0 :(得分:5)
while IFS=, read field1 field2 field3
do
echo $field1
echo $field2
echo $field3
done < list
答案 1 :(得分:3)
你能用awk吗?
awk -F',' '{print "Field1: " $1 "\nField2: " $2 "\nField3: " $3}'
答案 2 :(得分:3)
Do not read lines with a for loop.请改用read
while IFS=, read -r -a line;
do
printf "%s\n" "${line[0]}" "${line[1]}" "${line[2]}";
done < list
或者,使用数组切片
while IFS=, read -r -a line;
do
printf "%s\n" "${line[@]:0:3}";
done < list