我试图从文件中读取每一行输入,取一个特定的单词(用分隔符分隔)并将其分配给变量。
cat Number
Number11,Number21,Number31
Number12,Number22,Number32
Number13,Number23,Number33
我使用了以下代码:
while
read LINE
do
var1=$(echo $LINE|awk -F, '{ print $1 }')
echo $var1
done < Number|awk -F\, '{ print $1 "," $2 }'|head -2
我希望输出为:
Number11
Number12
Number13
但我得到了输出:
Number11,
Number12,
Number13,
我收到逗号(,),这不是必需的。有人可以纠正我。
答案 0 :(得分:3)
多次回答......
while IFS=, read -r n1 n2 n3
do
#echo "=n1:$n1= =n2:$n2= =n3:$n3="
echo "$n1"
done < Number
IFS
(输入字段分隔符)设置为逗号read
的参数打印:
Number11
Number12
Number13
答案 1 :(得分:2)
#!/bin/bash
#read the lines as array with delemiter as ','
while IFS=',' read -a line
do
# echo the index zero of the array
echo "${line[0]}"
done < Number
答案 2 :(得分:0)
cut
对于这种情况也很有用:
while read LINE; do
var1=$(cut -d ',' -f 1 <<< $LINE)
echo $var1
done < Number
输出:
Number11
Number12
Number13
答案 3 :(得分:0)
尝试以下awk
命令:
awk -F"," '{print $1}' Number
这避免了不必要的循环逐行读取文件,因为awk无论如何都会逐行解析文件。 awk的-F
选项用于指定分隔符。
由于您希望它在变量中,请尝试:
for each in `awk -F"," '{print $1}' Number`
do
echo $each
done