Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/codeigniter/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用awk筛选.csv文件_Awk_Sed_Grep_Echo_Cat - Fatal编程技术网

如何使用awk筛选.csv文件

如何使用awk筛选.csv文件,awk,sed,grep,echo,cat,Awk,Sed,Grep,Echo,Cat,我想知道如何使用awk或其他cli工具从这个.csv文件中获取水果的名称 我在vim中使用了一个宏来编辑该文件,但我认为有一个简单的一行程序也可以做到这一点 : 我想要的最终结果如下所示: Apple Lemon Lime Lychee Mango Mangostine Melon Cantaloupe Honeydew melon Watermelon Rock melon Nectarine Orange Peach Pear Williams pear or Bartlett pear P

我想知道如何使用awk或其他cli工具从这个.csv文件中获取水果的名称

我在vim中使用了一个宏来编辑该文件,但我认为有一个简单的一行程序也可以做到这一点

:

我想要的最终结果如下所示:

Apple
Lemon
Lime
Lychee
Mango
Mangostine
Melon
Cantaloupe
Honeydew melon
Watermelon
Rock melon
Nectarine
Orange
Peach
Pear
Williams pear or Bartlett pear
Pitaya
Physalis
Plum/prune (dried plum)
Pineapple
Pomegranate
Raisin
Raspberry
Western raspberry (blackcap)
我意识到这是一个重复:

我建议:

awk -F '","' '{print $2}' file
使用“
”、“
作为字段分隔符并输出第二列。

我建议:

awk -F '","' '{print $2}' file

使用“
”、“
作为字段分隔符并输出第二列。

使用此Perl one liner:

perl -F',' -lane '$F[1] =~ tr/"//d; print $F[1];' in_file > out_file 
Perl one liner使用以下命令行标志:
-e
:告诉Perl在线查找代码,而不是在文件中。
-n
:一次循环输入一行,默认情况下将其分配给
$。
-l
:在行内执行代码之前,先去掉输入行分隔符(
“\n”
,默认情况下在*NIX上),然后在打印时将其追加。
-a
:在空格或
-F
选项中指定的正则表达式上将
$\ucode>拆分为数组
@F

-F','
:按逗号而不是空格拆分为
@F

另请参见:

使用以下Perl单行程序:

perl -F',' -lane '$F[1] =~ tr/"//d; print $F[1];' in_file > out_file 
Perl one liner使用以下命令行标志:
-e
:告诉Perl在线查找代码,而不是在文件中。
-n
:一次循环输入一行,默认情况下将其分配给
$。
-l
:在行内执行代码之前,先去掉输入行分隔符(
“\n”
,默认情况下在*NIX上),然后在打印时将其追加。
-a
:在空格或
-F
选项中指定的正则表达式上将
$\ucode>拆分为数组
@F

-F','
:按逗号而不是空格拆分为
@F

另请参见:

GNU awk和
gensub()

输出

Apple
...
Lemon
Lime
GNU awk和
gensub()

输出

Apple
...
Lemon
Lime

使用
awk
删除第二个字段中的所有
,并且仅在第二个字段的开头和结尾


awk -F',' '{gsub(/^"|"$/,"",$2);print $2}' file
Apple
Lemon
Lime
Lychee
Mango
Mangostine
Melon
Cantaloupe
Honeydew melon
Watermelon
Rock melon
Nectarine
Orange
Peach
Pear
Williams pear or Bartlett pear
Pitaya
Physalis
Plum/prune (dried plum)
Pineapple
Pomegranate
Raisin
Raspberry
Western raspberry (blackcap)

使用
awk
删除第二个字段中的所有
,并且仅在第二个字段的开头和结尾


awk -F',' '{gsub(/^"|"$/,"",$2);print $2}' file
Apple
Lemon
Lime
Lychee
Mango
Mangostine
Melon
Cantaloupe
Honeydew melon
Watermelon
Rock melon
Nectarine
Orange
Peach
Pear
Williams pear or Bartlett pear
Pitaya
Physalis
Plum/prune (dried plum)
Pineapple
Pomegranate
Raisin
Raspberry
Western raspberry (blackcap)

使用sed和awk的组合

sed -e 's/^"//;s/","/\t/g;s/"//g' Input.csv| awk -F'\t' '{print$2}'


两者都可以通过更改awk列号来打印每一列。

使用sed和awk的组合

sed -e 's/^"//;s/","/\t/g;s/"//g' Input.csv| awk -F'\t' '{print$2}'


两者都可以通过更改awk列号来打印每一列。

使用提供的副本,您也可以快速得到答案:
awk-v FPAT='[^,]*|“[^”]+“{print$2}”file.csv
这里还有一些其他方法:方法1:
grep-o”[a-zA-Z()*“fruits.csv
来处理所有需要的字符,方法2:
cut-d”,“-f2 fruits.csv | sed's/”/g'
定义一个delimeter
-d“,“
,选择一个索引
-f2
,用sed删除引号。方法3:
sed's/[^,]*,//;s/,.//;s/”/g'fruits.csv
删除第一个逗号之前的所有内容,删除第二个逗号之后的所有内容,包括第二个逗号,删除引号使用提供的副本,你也很快得到了答案:
awk-vfpat='[^,]*.“[^”]+“{print$2}”file.csv
这里还有一些其他方法:方法1:
grep-o“[a-zA-Z()]”fruits.csv
要加工所有需要的字符,方法2:
cut-d”、“-f2 fruits.csv//sed'/g'
定义一个delimeter
-d”、
,选择索引
-f2
,用sed删除引号。方法3:
sed的/[^,]*,/;s/,*/;s//“//g'fruits.csv
删除第一个逗号之前的所有内容,删除第二个逗号之后的所有内容,包括第二个逗号,删除引号