Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/shell/5.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
Unix-第9个逗号后的拆分行_Unix_Shell_Awk_Ksh - Fatal编程技术网

Unix-第9个逗号后的拆分行

Unix-第9个逗号后的拆分行,unix,shell,awk,ksh,Unix,Shell,Awk,Ksh,我正在编写一个ksh shell脚本,我有一个逗号分隔的长字符串,我需要在第9个逗号之后将其分成单独的行。在第9个逗号之后,我想删除该逗号并换行: 例如: 初始字符串 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21 输出: 1,2,3,4,5,6,7,8,9,10 11,12,13,14,14,15,16,17,18,19,20 21 我知道这在awk中是可能的,但我对命令不是很熟悉。有人能提供如何做到这一点吗 谢谢awk-F,'{

我正在编写一个ksh shell脚本,我有一个逗号分隔的长字符串,我需要在第9个逗号之后将其分成单独的行。在第9个逗号之后,我想删除该逗号并换行:

例如: 初始字符串 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21

输出:

1,2,3,4,5,6,7,8,9,10
11,12,13,14,14,15,16,17,18,19,20
21
我知道这在awk中是可能的,但我对命令不是很熟悉。有人能提供如何做到这一点吗

谢谢

awk-F,'{
对于(i=1;i
注意:为了清楚起见,不能使用
cat
:这可能是任何过程

根据您的实际需要,删除
sed
步骤并将输出空间分隔开

奖励积分: 输入(t.txt)

输出

1,2,3,4,5,6,7,8,9,10
11,12,13,14,14,15,16,17,18,19
20,21
22,23
24,25,26,27,28,29,30,31
32,33,34,35,36,37,38,39,40,41
42,43,44,45,46,47,48,49,50
如果要均匀填充线条,请添加粘贴:

粘贴-sd,t.txt
|xargs-d,-n10 | sed's//,/g'


manawk
?…您熟悉该命令吗?:)我还是不觉得奇怪。我想我永远也不会了;有点冗长,不是吗?编辑一下,在第三行中运行这个,有13个元素。有什么问题吗?…哦…最后一行有一个逗号line@sehe:修复了尾随逗号。$cat t.txt | xargs-d,-rn10 | sed's/,/g'xargs:invalize选项--d xargs:用法:xargs:[-t][-p][e[eofstr][-E eofstr][-I replstr][-I[replstr][-L#][-L[#][-n#[-x][-s size][cmd args…]]Hmmm您没有GNU xargs;您可以尝试
gxargs
或了解GNU xargs是否在/opt/或类似的模式下可用(至少在Solaris上通常)。我知道某些BSD具有“可切换”用户区,因此找到哪个版本的
xargs
取决于您的环境。
cat t.txt | xargs -d, -rn10 | sed 's/ /,/g'
1,2,3,4,5,6,7,8,9,10,11,12,13,14,14,15,16,17,18,19,20,21
22,23
24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50
1,2,3,4,5,6,7,8,9,10
11,12,13,14,14,15,16,17,18,19
20,21
22,23
24,25,26,27,28,29,30,31
32,33,34,35,36,37,38,39,40,41
42,43,44,45,46,47,48,49,50
1,2,3,4,5,6,7,8,9,10
11,12,13,14,14,15,16,17,18,19
20,21,22,23,24,25,26,27,28,29
30,31,32,33,34,35,36,37,38,39
40,41,42,43,44,45,46,47,48,49
50
$ s='1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21'

$ print "$s" | tr , '\n' | paste -d , - - - - - - - - - - | sed -e 's/,\+$//'
1,2,3,4,5,6,7,8,9,10
11,12,13,14,15,16,17,18,19,20
21

$ print "$s" | tr , '\n' | xargs -n 10 echo | tr " " ,
1,2,3,4,5,6,7,8,9,10
11,12,13,14,15,16,17,18,19,20
21