How do I replace a string with a newline using a bash script and sed?

后端 未结 7 2027
夕颜
夕颜 2021-02-13 09:41

I have the following input:

Value1|Value2|Value3|Value4@@ Value5|Value6|Value7|Value8@@ Value9|etc...

In my bash script I would like to replace

7条回答
  •  渐次进展
    2021-02-13 10:21

    This wraps up using perl to do it, and gives some simple help.

    $ echo "hi\nthere"
    hi
    there
    
    $ echo "hi\nthere" | replace_string.sh e
    hi
    th
    re
    
    $ echo "hi\nthere" | replace_string.sh hi
    
    
    there
    
    $ echo "hi\nthere" | replace_string.sh hi bye
    bye
    there
    
    $ echo "hi\nthere" | replace_string.sh e super all
    hi
    thsuperrsuper
    

    replace_string.sh

    #!/bin/bash
    
    ME=$(basename $0)
    function show_help()
    {
      IT=$(cat < replaces first instance of ":" with a new line
      $ME : b     -> replaces first instance of ":" with "b"
      $ME a b all -> replaces ALL instances of "a" with "b"
      )
      echo "$IT"
      exit
    }
    
    if [ "$1" == "help" ]
    then
      show_help
    fi
    if [ -z "$1" ]
    then
      show_help
    fi
    
    STRING="$1"
    TIMES=${3:-""}
    WITH=${2:-"\n"}
    
    if [ "$TIMES" == "all" ]
    then
      TIMES="g"
    else
      TIMES=""
    fi
    
    perl -pe "s/$STRING/$WITH/$TIMES"
    

提交回复
热议问题