Append text to file from command line without using io redirection

后端 未结 4 1896
天命终不由人
天命终不由人 2020-12-23 16:00

How can we append text in a file via a one-line command without using io redirection?

相关标签:
4条回答
  • 2020-12-23 16:52

    If you just want to tack something on by hand, then the sed answer will work for you. If instead the text is in file(s) (say file1.txt and file2.txt):

    Using Perl:

    perl -e 'open(OUT, ">>", "outfile.txt"); print OUT while (<>);' file*.txt

    N.B. while the >> may look like an indication of redirection, it is just the file open mode, in this case "append".

    0 讨论(0)
  • 2020-12-23 16:55

    If you don't mind using sed then,

    $ cat test 
    this is line 1
    $ sed -i '$ a\this is line 2 without redirection' test 
    $ cat test 
    this is line 1
    this is line 2 without redirection
    

    As the documentation may be a bit long to go through, some explanations :

    • -i means an inplace transformation, so all changes will occur in the file you specify
    • $ is used to specify the last line
    • a means append a line after
    • \ is simply used as a delimiter
    0 讨论(0)
  • 2020-12-23 16:58

    You can use the --append feature of tee:

    cat file01.txt | tee --append bothFiles.txt 
    cat file02.txt | tee --append bothFiles.txt 
    

    Or shorter,

    cat file01.txt file02.txt | tee --append bothFiles.txt 
    

    I assume the request for no redirection (>>) comes from the need to use this in xargs or similar. So if that doesn't count, you can mute the output with >/dev/null.

    0 讨论(0)
  • 2020-12-23 17:03

    You can use Vim in Ex mode:

    ex -sc 'a|BRAVO' -cx file
    
    1. a append text

    2. x save and close

    0 讨论(0)
提交回复
热议问题