使用Sed替换换行符的字符或表达式

时间:2014-02-16 01:13:31

标签: bash unix sed tr

如何使用Sed命令将字符或表达式替换为换行符?

(对于字符替换,我通常使用tr ';' "\n"命令。)

4 个答案:

答案 0 :(得分:2)

  1. 使用Sed代替;字符(分号)代替换行符:

    sed "s/;/\\
    /g"
    

    sed "s/;/\\$(echo -e '\n')/g"
    
  2. 使用Sed代替[^A-Za-z]表达式(字母字符以外的任何内容)换行:

    sed "s/[^A-Za-z]/\\
    /g"
    

    sed "s/[^A-Za-z]/\\$(echo -e '\n')/g"
    

答案 1 :(得分:1)

怎么样:

sed $'s/;/\\\n/g' inputFile

$ cat inputFile
this;is;a;text
$ sed $'s/;/\\\n/g' inputFile
this
is
a
text

答案 2 :(得分:0)

在文字换行符之前的反斜杠是在sed中获取换行符的便携方法:

$ echo "a,b" | sed 's/,/\
/'
a
b

答案 3 :(得分:0)

这可能适合你(GNU sed& Bash):

sed 'y/;/\n/' file

sed $'y/;/\\n/' file

或非常令人费解:

sed -e 'G' -e ':a' -e 's/\(;\)\(.*\(.\)\)/\3\2/' -e 'ta' -e 's/.$//' file