Bash: add string to the end of the file without line break

后端 未结 4 751
萌比男神i
萌比男神i 2021-02-03 23:28

How can I add string to the end of the file without line break?

for example if i\'m using >> it will add to the end of the file with line break:

cat list         


        
相关标签:
4条回答
  • 2021-02-04 00:03

    Just use printf instead, since it does not print the new line as default:

    printf "final line" >> file
    

    Test

    Let's create a file and then add an extra line without a trailing new line. Note I use cat -vet to see the new lines.

    $ seq 2 > file
    $ cat -vet file
    1$
    2$
    $ printf "the end" >> file
    $ cat -vet file
    1$
    2$
    the end
    
    0 讨论(0)
  • 2021-02-04 00:06

    You can use the -n parameter of echo. Like this:

    $ touch a.txt
    $ echo -n "A" >> a.txt
    $ echo -n "B" >> a.txt
    $ echo -n "C" >> a.txt
    $ cat a.txt
    ABC
    

    EDIT: Aha, you already had a file containing string and newline. Well, I'll leave this here anyway, might we useful for someone.

    0 讨论(0)
  • 2021-02-04 00:12

    The above answers didn't work for me. Posting a Python implementation in case anyone finds it useful.

    python -c "txtfile = '/my/file.txt' ; f = open(txtfile, 'r') ; d = f.read().strip() ; f.close() ; d = d + 'the data to append' ; open(txtfile, 'w').write(d)"
    
    0 讨论(0)
  • 2021-02-04 00:23
    sed '$s/$/yourText2/' list.txt > _list.txt_ && mv -- _list.txt_ list.txt
    

    If your sed implementation supports the -i option, you could use:

    sed -i.bck '$s/$/yourText2/' list.txt
    

    With the second solution you'll have a backup too (with first you'll need to do it manually).

    Alternatively:

    ex -sc 's/$/yourText2/|w|q' list.txt 
    

    or

    perl -i.bck -pe's/$/yourText2/ if eof' list.txt
    
    0 讨论(0)
提交回复
热议问题