sed は # で始まらない一致する行を置き換えます。

sed は # で始まらない一致する行を置き換えます。

「テストファイル」というファイルがあります。次の2行しかありません(最初の行には#記号があり、2行目には内容は同じですが、ハッシュはありません)。

#contents of line
contents of line

sedコマンドを使用して2行目の内容を更新/交換したいと思います。私は次の簡単な構文を知っています。

sed -i 's/.*contents of line.*/updated contents/' test-file

ただし、上記のコマンドはこれらの2行を置き換えるため、最初の行を前の#記号で更新したくありません。

ベストアンサー1

次の方法で編集できます。

sed -e '/^#/!s/.*/UPDATED_CONTENTS/' input-file.txt

または

sed -e '/^#/!c\
UPDATED_CONTENTS' input-file.txt

これは次のように理解できます。で始まらない行の場合、行全体を#指定された内容に変更します。

octothorpeの前に空白がある場合は、/^[[:blank:]]*#/残りを変更せずに正規表現を調整してください。

おすすめ記事