一尘不染

使用sed用定界符分割字符串

linux

我有以下格式的字符串:

string1:string2:string3:string4:string5

我试图用来sed拆分字符串,:并在新行上打印每个子字符串。这是我在做什么:

cat ~/Desktop/myfile.txt | sed s/:/\\n/

打印:

string1
string2:string3:string4:string5

如何在每个定界符上拆分它?


阅读 1204

收藏
2020-06-07

共1个答案

一尘不染

要使用GNU sed用分隔符分割字符串,请说:

sed 's/delimiter/\n/g'     # GNU sed

例如,使用:用作分隔符进行分割:

$ sed 's/:/\n/g' <<< "he:llo:you"
he
llo
you

或使用非GNU sed:

$ sed $'s/:/\\\n/g' <<< "he:llo:you"
he
llo
you

在这种特殊情况下,您错过g了替换后的。因此,仅执行一次。看到:

$ echo "string1:string2:string3:string4:string5" | sed s/:/\\n/g
string1
string2
string3
string4
string5

g代表g小叶,表示必须在全局范围内(即任何情况下)进行替换。请注意,默认值为1,如果输入示例2,则将其设置为2次,依此类推。

总之,您需要使用:

sed 's/:/\\n/g' ~/Desktop/myfile.txt

请注意,您可以直接使用sed ... file语法,而不是不必要的管道:cat file | sed

2020-06-07