Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/20.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
Regex 如何使用bash打印列表中的所有项目,包括用逗号分隔的项目?_Regex_Bash_Command - Fatal编程技术网

Regex 如何使用bash打印列表中的所有项目,包括用逗号分隔的项目?

Regex 如何使用bash打印列表中的所有项目,包括用逗号分隔的项目?,regex,bash,command,Regex,Bash,Command,好的,我有file.txt,它有两个以制表符分隔的列表: A sheep,cow B pig C horse D goat,duck,llama 我想在新文件file2.txt中打印第二个列表中的所有项目,即使是用逗号分隔的项目: sheep cow pig horse goat duck llama 我试着这样做: cat file.txt | awk 'NR>1 {for (i=2; i<=NF; i++) if ($i !=",") print $i}' |

好的,我有file.txt,它有两个以制表符分隔的列表:

A   sheep,cow
B   pig
C   horse
D   goat,duck,llama
我想在新文件file2.txt中打印第二个列表中的所有项目,即使是用逗号分隔的项目:

sheep
cow
pig
horse
goat
duck
llama
我试着这样做:

cat file.txt | awk 'NR>1 {for (i=2; i<=NF; i++) if ($i !=",") print $i}' | sort -d | uniq > file2.txt

cat file.txt | awk'NR>1{for(i=2;i我会采取简单的方法:

$ cut -f 2 file.txt | tr ',' '\n'
sheep
cow
pig
horse
goat
duck
llama

它得到第二列,并用换行符替换逗号。

读过《懒人启蒙指南》吗?为什么会很难?:-)Oho!简单的答案总是最好的。这非常有效。谢谢!@KM fyi,您的尝试没有成功,因为您在没有告诉awk
的情况下对字段进行了迭代,
分隔的项也应该被视为字段。如果您添加
-F'[\t,]'
,它会起作用