对你来说可能是一个非常简单的问题但是我已经有一段时间了解这个问题。 基本上我想在文件夹中的每个csv文件中执行一些操作,我把这个简单的脚本放在一起:
#!/bin/bash
for file in *.csv ;
do
echo $file #check
OLDIFS=$IFS
IFS=","
while read var1
do
echo $var1
done < $file
IFS=$OLDIFS
done
csv文件遵循所有相同的格式,1行和12个变量,如:
name,1,2,3,4,5,6,7,8,9,11
在我看来,while条件总是错误的,永远不会运行。 你能告诉我哪里错了吗? 谢谢
答案 0 :(得分:3)
要获得第一个字段,您需要向read
提供两个参数;第一个字段的第一个字段,第二个字段在分割后保留剩余的值。
#!/bin/bash
for file in *.csv; do
echo $file #check
while IFS=, read name rest; do
echo "$name"
done < "$file"
done
答案 1 :(得分:0)
这样的事情应该有效。它将文件读入一个数组,每隔,
拆分一次。它迭代数组并在新行上打印出每个元素。
#!/bin/bash
for file in *.csv
do
echo "$file" #check
IFS=',' read -a vars < "$file"
for var1 in ${vars[@]}
do
echo "$var1"
done
done