How to add text at the end of each line in unix

前端 未结 4 1439
野性不改
野性不改 2020-12-02 20:31

I am doing certain text processing operations and finally able to get a file something like this

india
sudan
japan
france

now I want to add

相关标签:
4条回答
  • 2020-12-02 20:57

    Another awk

    awk '$0=$0" | COUNTRY"' file
    
    0 讨论(0)
  • 2020-12-02 20:58

    You can also use xargs with echo for this:

    < file xargs -d "\n" -rI % echo '% | COUNTRY'
    

    This will make xargs take each line of file and pass it one at a time† to the specified echo command, replacing the % (or whatever character you choose) with the input line.

    † By default xargs will pass multiple lines of input to a single command, appending them all to its argument list. But specifying -I % makes xargs put the input at the specified place in the command, and only put one line there at a time, running echo as many times as required.

    0 讨论(0)
  • 2020-12-02 20:59

    For a more obfuscated approach:

    yes '| COUNTRY' | sed $(wc -l < file)q | paste -d ' ' file -
    
    0 讨论(0)
  • 2020-12-02 21:09

    There are many ways:

    sed: replace $ (end of line) with the given text.

    $ sed 's/$/ | COUNTRY/' file
    india | COUNTRY
    sudan | COUNTRY
    japan | COUNTRY
    france | COUNTRY
    

    awk: print the line plus the given text.

    $ awk '{print $0, "| COUNTRY"}' file
    india | COUNTRY
    sudan | COUNTRY
    japan | COUNTRY
    france | COUNTRY
    

    Finally, in pure bash: read line by line and print it together with the given text. Note this is discouraged as explained in Why is using a shell loop to process text considered bad practice?

    $ while IFS= read -r line; do echo "$line | COUNTRY"; done < file
    india | COUNTRY
    sudan | COUNTRY
    japan | COUNTRY
    france | COUNTRY
    
    0 讨论(0)
提交回复
热议问题