Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.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
Sorting 外部awk调用中的排序字段分隔符问题,如果其分号为_Sorting_Awk - Fatal编程技术网

Sorting 外部awk调用中的排序字段分隔符问题,如果其分号为

Sorting 外部awk调用中的排序字段分隔符问题,如果其分号为,sorting,awk,Sorting,Awk,我有一个csv分号分开,我想排序一些字段,而不头保持头不变。 如果我使用冒号作为字段分隔符,没有问题,但我不知道如何使用分号作为字段分隔符 文件temp2: a,b,c,d,e 1,2,3,4,5 3,1,2,3,1 2,3,1,2,3 >cat temp2 | awk 'NR==1; NR > 1 {print $0 | "sort -t, -k2"}' 结果ok排序字段2: a,b,c,d,e 3,1,2,3,1 1,2,3,4,5 2,3,1,2,3 下一次尝试,执行相同

我有一个csv分号分开,我想排序一些字段,而不头保持头不变。 如果我使用冒号作为字段分隔符,没有问题,但我不知道如何使用分号作为字段分隔符

文件temp2:

a,b,c,d,e
1,2,3,4,5
3,1,2,3,1
2,3,1,2,3

>cat temp2 | awk 'NR==1; NR > 1 {print $0 | "sort -t, -k2"}'
结果ok排序字段2:

a,b,c,d,e
3,1,2,3,1
1,2,3,4,5
2,3,1,2,3
下一次尝试,执行相同的操作,但使用分号字段分隔符:

文件temp1

a;b;c;d;e
1;2;3;4;5
3;1;2;3;1
2;3;1;2;3


 >cat temp1 | awk 'NR==1; NR > 1 {print $0 | "sort -t=";" -k2"}'  
结果文件未被触及:

a;b;c;d;e
1;2;3;4;5
2;3;1;2;3
3;1;2;3;1  
预期的结果是:

a;b;c;d;e
3;1;2;3;1
1;2;3;4;5
2;3;1;2;3

您不需要awk来执行此操作:

$ head -n 1 file; tail -n +2 file | sort -t';' -k2
a;b;c;d;e
3;1;2;3;1
1;2;3;4;5
2;3;1;2;3
话虽如此,在您的awk命令中:

"sort -t=";" -k2"
这意味着:

("sort -t=") ; (" -k2")
i、 e.嵌套的双引号实际上终止了要在命令内部进行排序的字符串。在使用
-t=“;”
而不是
-t”;“
时,也会出现一个错误,因此我们假设这已修复。现在:

您可以使用此选项:

"sort -t\";\" -k2"
或者更好的wrt外壳引用规则:

"sort -t\047;\047 -k2"
请在下面写下您对它在awk中不起作用的评论,请看:

$ awk 'NR==1; NR>1{print | "sort -t\047;\047 -k2"}' file
a;b;c;d;e
3;1;2;3;1
1;2;3;4;5
2;3;1;2;3

谢谢Ed,这项工作但是想在awk上做同样的事情,调用sort@user123414我不知道这是什么意思。第一个脚本之后的所有内容都是如何在awk中调用sort,正如您正在尝试的那样,我只是在修改您的语法。我更新了我的答案,以显示它在awk中工作。这在shell中工作得很好,但是如果我想在脚本中对来自其他管道(或awk结果)的数据进行排序,awk语句中的新管道会产生一些问题,那里的任何人都能找到解决方案吗?(awk:cmd.line:1:fatal:无法打开文件``进行读取(没有这样的文件或目录)),这与您提出的问题无关(如何使awk中的排序工作;就像它对,)。如果你有一个新问题,问一个新问题。你是对的,Ed,我会用其他方式尝试,如果我找不到工作,我会提出一个新问题,你帮了我很多!