bashでファイルの最後からxxx行目に行を追加したい

[code]

    #!/bin/bash
    
    TEST=`/bin/grep -w '^test' /tmp/test/test.txt`
    if [ "${TEST}" == "" ]; then
      #testがない場合
      echo "test" >> /tmp/test/test.txt
    else
      #testがある場合
    fi
    
[/code]

上記でファイルの最後にtest行が追加できたのですが、  
ファイルの最後からxx行目に追加するには echo ではできないでしょうか？




`echo`ではできないと思います。  
`sed`を使うとよいでしょう。

[code]

    file='/tmp/test/test.text'
    
    #ファイルの最後からxx行目の行番号を取得
    line_num=$(grep -c ^ $file)
    row_num=$((line_num - xx))
    
    #指定行に挿入
    sed -i ''$row_num'i test' $file
    
[/code]

細かなところは以下を参考にしました。

  * [grep -cで行数を数える時の罠](https://rcmdnk.com/blog/2017/04/20/computer-linux-mac-bash-zsh/)
  * [スクリプト言語sed、awk](http://www.coins.tsukuba.ac.jp/~yas/coins/syspro-2001/2001-06-25/)
  * [bashで演算を行う方法: 小粋空間](http://www.koikikukan.com/archives/2014/01/09-012345.php)




`echo`ではできないと思います。  
`sed`を使うとよいでしょう。

[code]

    file='/tmp/test/test.text'
    
    #ファイルの最後からxx行目の行番号を取得
    line_num=$(grep -c ^ $file)
    row_num=$((line_num - xx))
    
    #指定行に挿入
    sed -i ''$row_num'i test' $file
    
[/code]

細かなところは以下を参考にしました。

  * [grep -cで行数を数える時の罠](https://rcmdnk.com/blog/2017/04/20/computer-linux-mac-bash-zsh/)
  * [スクリプト言語sed、awk](http://www.coins.tsukuba.ac.jp/~yas/coins/syspro-2001/2001-06-25/)
  * [bashで演算を行う方法: 小粋空間](http://www.koikikukan.com/archives/2014/01/09-012345.php)

