Text-Processing

在每 2 個 ‘,’ 之後分隔元素並在 bash 中推入下一行

  • May 20, 2019

我的文件範例如下所示:

201012,720,201011,119,201710,16

我想要的輸出:

201012,720
201011,119
201710,16

使用 Sed 循環:

sed -e 's/,/\n/2' -e 'P;D' file

前任。

$ echo '201012,720,201011,119,201710,16' | sed -e 's/,/\n/2' -e 'P;D'
201012,720
201011,119
201710,16

這會將第二個替換為,\n然後重複列印並刪除\n, 直到替換不再成功。

BSD 不理解命令\n右側的換行符s,這是 ksh、bash、zsh shell 的解決方法:

sed -e :a -e $'s/,/\\\n/2' -e 'P;D' file

或者,(舊)seds 的一般解決方案:

sed '
:a
s/,/\
/2
P;D
' file

引用自:https://unix.stackexchange.com/questions/519690