91645


Linuxコマンドで以下のようにテキストファイル (test.txt) を加工したいです。

**加工前:**

[code]

    -- SQL
    
[/code]

**加工後:**

[code]

    header
    -- SQL
    footer
    
[/code]

以下のようなシェルスクリプトを実行してもうまくいきませんでした。  
うまくいく方法を教えていただけますと嬉しいです。

test.sh

[code]

    # not foundになる。
    sed -i '1s/^/header\\n/' test.txt
    
    # なぜかtest.txt・というファイル名が作られる
    echo footer >> test.txt
    
[/code]


CC BY-SA 4.0
2022-10-17T06:59:21.620
91642
2022-10-17T09:34:39.463
2022-10-17T09:34:39.463
3054
36855
question
linux shellscript sed
Linux コマンドでテキストファイルにヘッダーとフッターを追加したい

[code]

    $ sed -i -E -e '1iheader' -e '$afooter' test.txt
    $ cat test.txt
    header
    -- SQL
    footer
    
[/code]


CC BY-SA 4.0
2022-10-17T07:11:47.460
91643
2022-10-17T07:11:47.460
47127
91642
answer


`sed` を使わない別の例です。

[code]

    #!/bin/sh
    
    echo "header" >> result.txt
    cat test.txt  >> result.txt
    echo "footer" >> result.txt
    
[/code]


CC BY-SA 4.0
2022-10-17T07:37:52.790
91645
2022-10-17T07:37:52.790
3060
91642
answer


質問のコードに大きな間違いは有りません。このコードで「not
foundになる」「test.txt・というファイル名が作られる」という現象は起きません。色々と試している時に、なにか手順を誤ったのでしょう。

小さな間違いとして、`\\n` が有ります。これは `\n` が正しいです。(`\n` が使えるのは GNU 拡張のようですが、そもそも `-i`
オプションが GNU 拡張なので、使える環境だと考えられます)


CC BY-SA 4.0
2022-10-17T09:33:36.990
91649
2022-10-17T09:33:36.990
3054
91642
answer