使用しない非常に単純な1行のSEDコマンドを作成しようとしていますbash conditions
。
同様の操作を実行し、ファイルの末尾に追加するSEDコマンドの場合は、次のようにします。
sed -n -e '/.*MYLINE.*/!p' -e '$aVAR=MYLINE' -i /path/to/file
ただし、今回は行が挿入される場所が重要であるため、特定の文字列の後に配置する必要があります。私は以下を試しました:
sed -n -e '/.*MYLINE.*/!p' -e t -i '/^ANOTHER_PATTERN.*/aVAR=MYLINE' /path/to/file
だから私は/path/to/file
これからピボットすることができます
...
ANOTHER_PATTERN=SOMETHING
...
またはこれ
...
ANOTHER_PATTERN=SOMETHING
VAR=OTHERS MYLINE
...
これを作り出すために
...
ANOTHER_PATTERN=SOMETHING
VAR=MYLINE
...
しかし、期待した結果は得られませんでした。インターネットを検索しようとしましたが、役に立ちませんでした。
パターンがある場合は正しく検索し、行全体を置き換える方法、それ以外の場合はSEDを使用して別のパターンの後に新しい行を挿入する方法は?
ベストアンサー1
sed -e '/MYLINE/d' -e '/^ANOTHER_PATTERN/a\
VAR=MYLINE' file
行にパターンが含まれている場合、パターンは削除され、パターンで始まる行にその行が追加されMYLINE
ます。ファイルをその場で編集するオプションを追加します(実装でサポートされている場合).VAR=MYLINE
ANOTHER_PATTERN
-i
sed