如何从单行元组中提取单个值?

如何从单行元组中提取单个值?

我有以下形式的数据库转储文件

('value1','value2',value3','value4'),('value1','value2',value3','value4'),...

我首先希望将每个元组放在一行中,然后我只想导出一个值(即:每个元组中的 value3)

答案1

将每个元组放在单独的行上:

sed 's@)\s*,\s*(@)\n(@g' your_file

要将修改应用于文件(而不是将修改后的文件打印到标准输出):

sed -i 's@)\s*,\s*(@)\n(@g' your_file

仅报告value3(假设文件已修改):

awk -F',' '{print $3}' <your_new_file

这假设值本身不包含,.请参阅下面迈克尔的评论。

一次性完成所有操作(无需修改文件):

sed 's@)\s*,\s*(@)\n(@g' your_file | awk -F',' '{print $3}'

为了简化上面的awk调用,我利用了这样一个事实:根据您的示例,我们可以将输入拆分为,value3将是第三个值,并且其中没有括号。如果您愿意value1或者value4相反,您可以执行以下操作:

sed 's@)\s*,\s*(@)\n(@g' your_file | awk -F',' '{print $1}' | sed 's/[()]//'

当然,这假设您的值的内容中没有括号。

相关内容