【发布时间】:2014-08-27 01:16:37
【问题描述】:
我在 CSV 文件中有以下行
1,LINUX,"/usr/cti/conf/apps/parameters param1 param2","root passowrd"
在我删除分隔符“,”后,sed
我现在想从该行读取每个字段
# echo 1 LINUX "/usr/cti/conf/apps/parameters param1 param2" "root passowrd" | awk '{print $1}'
1
# echo 1 LINUX "/usr/cti/conf/apps/parameters param1 param2" "root passowrd" | awk '{print $2}'
LINUX
# echo 1 LINUX "/usr/cti/conf/apps/parameters param1 param2" "root passowrd" | awk '{print $3}'
/usr/cti/conf/apps/parameters
第三个字段的预期结果应该是 "/usr/cti/conf/apps/parameters param1 param2"
请告知如何阅读该字段以获取引号之间的所有单词,
需要在我的 awk 命令中添加什么?
所以如果是单个单词,那么 awk 应该只打印这个单词 如果 awk 看到引号之间的单词,那么 awk 应该打印引号之间的所有单词
- 备注 CSV 中的每个字段可以带引号或不带引号, 例如,第一个字段可以包含 3 个单词,例如“一二三”,或者第一个字段可能只有一个单词,awk 应该支持这两种情况
【问题讨论】:
-
您想获取
"和,之间的值吗? -
我猜你的
echos 错过了逗号分隔字段。如果是这样,cut -d',' -f3会成功,因为它将根据逗号分隔符提取第三个字段。 -
@fedorqui 他通过 sed 删除了逗号。如果他不这样做,那么提取数据会很容易。我还是不明白他的意思。
-
好的,我同意你的观点,我不会从行中删除逗号,所以这种情况下的解决方案会很简单吗?使用 cut -d ',' -fx
-
或者使用
,作为 awk 中的字段分隔符。