输入csv文件
sid,storeNo,latitude,longitude 2,1,-28.03720000,153.42921670 9
我希望只输出一列的行,在本例中它是第3行。 如何在bash shell脚本中完成?
答案 0 :(得分:4)
使用awk
以下awk将是usfull
$ awk -F, 'NF==1' inputFile
9
它的作用是什么?
-F,
将字段分隔符设置为,
NF==1
匹配NF
行,字段数为1.不提供操作因此默认操作,打印整个记录。它类似于NF==1{print $0}
inputFile
将csv文件输入到awk脚本
使用grep
使用grep
$ grep -v ',' inputFile
9
-v
选项会打印与模式
,
以及-v
greps匹配不包含,
字段分隔符的行
使用sed
$ sed -n '/^[^,]*$/p' inputFile
9
它的作用是什么?
-n
禁止正常打印图案空间
'/^[^,]*$/
选择与模式匹配的行,没有任何行,
^
将正则表达式锚定在字符串的开头
[^,]*
匹配,
$
将字符串锚定在字符串
p
操作p
使sed打印当前模式空间,即与输入匹配的模式空间
答案 1 :(得分:0)
试试这个bash
脚本
#!/bin/bash
while read -r line
do
IFS=","
set -- $line
case ${#} in
1) echo $line;;
*) continue;;
esac
done < file