Add text at the end of each line

前端 未结 7 2031
死守一世寂寞
死守一世寂寞 2020-11-28 20:24

I\'m on Linux command line and I have file with

127.0.0.1
128.0.0.0
121.121.33.111

I want

127.0.0.1:80
128.0.0.0:80
121.121         


        
相关标签:
7条回答
  • 2020-11-28 20:35

    sed -i 's/$/,/g' foo.txt

    I do this quite often to add a comma to the end of an output so I can just easily copy and paste it into a Python(or your fav lang) array

    0 讨论(0)
  • 2020-11-28 20:36
    1. You can also achieve this using the backreference technique

      sed -i.bak 's/\(.*\)/\1:80/' foo.txt
      
    2. You can also use with awk like this

      awk '{print $0":80"}' foo.txt > tmp && mv tmp foo.txt
      
    0 讨论(0)
  • 2020-11-28 20:44

    If you'd like to add text at the end of each line in-place (in the same file), you can use -i parameter, for example:

    sed -i'.bak' 's/$/:80/' foo.txt
    

    However -i option is non-standard Unix extension and may not be available on all operating systems.

    So you can consider using ex (which is equivalent to vi -e/vim -e):

    ex +"%s/$/:80/g" -cwq foo.txt
    

    which will add :80 to each line, but sometimes it can append it to blank lines.

    So better method is to check if the line actually contain any number, and then append it, for example:

    ex  +"g/[0-9]/s/$/:80/g" -cwq foo.txt
    

    If the file has more complex format, consider using proper regex, instead of [0-9].

    0 讨论(0)
  • 2020-11-28 20:47

    Using a text editor, check for ^M (control-M, or carriage return) at the end of each line. You will need to remove them first, then append the additional text at the end of the line.

    sed -i 's|^M||g' ips.txt
    sed -i 's|$|:80|g' ips.txt
    
    0 讨论(0)
  • 2020-11-28 20:53

    Concise version of the sed command:

    sed -i s/$/:80/ file.txt
    

    Explanation:

    • sed stream editor
      • -i in-place (edit file in place)
      • s substitution command
      • /replacement_from_reg_exp/replacement_to_text/ statement
      • $ matches the end of line (replacement_from_reg_exp)
      • :80 text you want to add at the end of every line (replacement_to_text)
    • file.txt the file name
    0 讨论(0)
  • 2020-11-28 20:53
    sed 's/.*/&:80/'  abcd.txt >abcde.txt
    
    0 讨论(0)
提交回复
热议问题