Bash 输出仅包含一列的行的csv
使用输入csv文件 sid,storeNo,latitude,longitude 2,1,-28.03720000,153.42921670 9 sid、storeNo、纬度、经度 2,1,-28.03720000,153.42921670 9 我希望只输出有一列的行,在本例中是第3行。Bash 输出仅包含一列的行的csv,bash,awk,Bash,Awk,使用输入csv文件 sid,storeNo,latitude,longitude 2,1,-28.03720000,153.42921670 9 sid、storeNo、纬度、经度 2,1,-28.03720000,153.42921670 9 我希望只输出有一列的行,在本例中是第3行。 如何在bashshell脚本中实现这一点?使用awk 以下awk将是usfull $ awk -F, 'NF==1' inputFile 9 它的作用是什么? -F,将字段分隔符设置为, NF==1匹配具有
如何在bashshell脚本中实现这一点?使用awk 以下awk将是usfull
$ awk -F, 'NF==1' inputFile
9
它的作用是什么?
将字段分隔符设置为-F,
,
匹配具有NF==1
的行,字段数为1。不提供任何操作,因此会执行默认操作,即打印整个记录。它类似于NF
NF==1{print$0}
将csv文件输入到awk脚本inputFile
grep
$ grep -v ',' inputFile
9
选项打印与图案不匹配的线条-v
以及,
greps匹配不包含-v
字段分隔符的行,
$ sed -n '/^[^,]*$/p' inputFile
9
它的作用是什么?
抑制图案空间的正常打印-n
选择与模式匹配的行,不带任何'/^[^,]*$/
,
将正则表达式锚定在字符串的开头^
匹配除[^,]*
,
将字符串锚定在字符串的末尾$
actionp
使sed打印当前模式空间,即与输入匹配的模式空间p
- 使用awk
以下awk将是usfull
$ awk -F, 'NF==1' inputFile
9
它的作用是什么?
将字段分隔符设置为-F,
,
匹配具有NF==1
的行,字段数为1。不提供任何操作,因此会执行默认操作,即打印整个记录。它类似于NF
NF==1{print$0}
将csv文件输入到awk脚本inputFile
grep
$ grep -v ',' inputFile
9
选项打印与图案不匹配的线条-v
以及,
greps匹配不包含-v
字段分隔符的行,
$ sed -n '/^[^,]*$/p' inputFile
9
它的作用是什么?
抑制图案空间的正常打印-n
选择与模式匹配的行,不带任何'/^[^,]*$/
,
将正则表达式锚定在字符串的开头^
匹配除[^,]*
,
将字符串锚定在字符串的末尾$
actionp
使sed打印当前模式空间,即与输入匹配的模式空间p
bash
脚本
#!/bin/bash
while read -r line
do
IFS=","
set -- $line
case ${#} in
1) echo $line;;
*) continue;;
esac
done < file
#/bin/bash
而read-r行
做
IFS=“,”
设置--$line
案例${#}in
1) 回音$线;;
*)继续;;
以撒
完成<文件
试试这个bash
脚本
#!/bin/bash
while read -r line
do
IFS=","
set -- $line
case ${#} in
1) echo $line;;
*) continue;;
esac
done < file
#/bin/bash
而read-r行
做
IFS=“,”
设置--$line
案例${#}in
1) 回音$线;;
*)继续;;
以撒
完成<文件
awk最灵活。如果您喜欢前两个字段,只需执行以下操作:awk-F,'NFNF==1{print$0}
NF==1
NF==1
@gboffi这是一个问题还是一个陈述?两者都不是,这是一个简化建议。。。也许是过度的简化,当然是一种神秘的简化。对不起,我说得太简单了,再见from@gboffi但这正是我在回答时首先写的,NF==1
。awk
是最灵活的。如果您喜欢前两个字段,只需执行以下操作:awk-F,'NFNF==1{print$0}
NF==1
NF==1
@gboffi这是一个问题还是一个陈述?两者都不是,这是一个简化建议。。。也许是过度的简化,当然是一种神秘的简化。对不起,我说得太简单了,再见from@gboffi但这就是我在回答时首先写的,NF==1
。