Linux 使用sed拆分带分隔符的字符串
我有一个以下格式的字符串:Linux 使用sed拆分带分隔符的字符串,linux,bash,sed,string-split,tr,Linux,Bash,Sed,String Split,Tr,我有一个以下格式的字符串: string1:string2:string3:string4:string5 我正在尝试使用sed拆分:上的字符串,并在新行上打印每个子字符串。以下是我正在做的: cat~/Desktop/myfile.txt | sed s/:/\\n/ 这张照片是: string1 string2:string3:string4:string5 如何让它在每个分隔符上拆分?要使用GNU sed分隔符拆分字符串,您可以说: sed 's/delimiter/\n/g'
string1:string2:string3:string4:string5
我正在尝试使用sed
拆分:
上的字符串,并在新行上打印每个子字符串。以下是我正在做的:
cat~/Desktop/myfile.txt | sed s/:/\\n/
这张照片是:
string1
string2:string3:string4:string5
如何让它在每个分隔符上拆分?要使用GNU sed分隔符拆分字符串,您可以说:
sed 's/delimiter/\n/g' # GNU sed
例如,要使用:
作为分隔符进行拆分:
$ sed 's/:/\n/g' <<< "he:llo:you"
he
llo
you
g
代表g
lobal,意味着必须在全局范围内进行替换,即对任何事件进行替换。请注意,默认值为1,如果您输入示例2,则会执行2次,以此类推
总之,在您的情况下,您需要使用:
sed 's/:/\\n/g' ~/Desktop/myfile.txt
请注意,您可以直接使用sed。。。文件
语法,而不是不必要的管道:cat file | sed
这应该可以:
cat ~/Desktop/myfile.txt | sed s/:/\\n/g
在
sed
中使用\n
是不可移植的。使用sed
实现所需功能的便携式方法是:
sed/:/\
/g'~/Desktop/myfile.txt
但实际上,这不是sed的工作,而是创建该工作的目的:
tr':“”
“<~/Desktop/myfile.txt
如果您使用的是gnu sed,则可以将\x0A
用于换行:
sed 's/:/\x0A/g' ~/Desktop/myfile.txt
这可能适用于您(GNU-sed):
或许:
sed y/:/$"\n"/ file
简单地使用:
$tr':“$”\n该死!我是如此接近。g
的作用是什么?我会尽快接受你的回答。谢谢它代表global
,意味着必须在global
范围内进行替换,也就是说,对于任何事件。请注意,默认值为1,如果您放入示例2,则会执行2次,以此类推。这在非GNU sed中不起作用。例如,您的最后一个示例是sed$s/:/\\\n/g'file.txt
,它依靠bash格式引用来解释ANSI反斜杠符号。@ghoti谢谢,我也用这种方法更新了。在未来,随时更新帖子,使其更加正确,我们都可以从中学习!你可以考虑<代码> Tr: 'n '喜欢使用T.简单和方便的解决方案。ThanksOn iTerm,在MacOS上,可以使用alt+enter
在输入上输入结束行字符。拆分$PATH
变量btw的简便技巧。不一定。Win32环境将使用不同的换行符,我上次检查时,Cygwin使用gnu sed。
sed 's/:/\x0A/g' ~/Desktop/myfile.txt
sed 'y/:/\n/' file
sed y/:/$"\n"/ file
$ tr ':' $'\n' <<< string1:string2:string3:string4:string5
string1
string2
string3
string4
string5
$ sed 's/:/\n/g' <<< string1:string2:string3:string4:string5
string1
string2
string3
string4
string5