行の先頭をそこにあるものと一致させますか?

行の先頭をそこにあるものと一致させますか?

何かを含む行の先頭を一致させたい。

Perl/Sedのコマンド

's/^.?/\section{}/g'

しかし、ここで問題は文章の最初の文字も置き換えるという点だ。

行の先頭に空でない行の内容を追加するには?

ベストアンサー1

sed '/./s/^/\\section{}/'

\section{}少なくとも1つを含むすべての行に追加されます効果的な特徴。

sed '/^$/!s/^/\\section{}/'

空でないすべての行に追加されます\section{}(たとえば、少なくとも1行を含む)。バイト)。

sed 's/./\\section{}&/'

\section{}対応する有効な文字を持つ各行の最初の有効な文字の前に挿入されます。 (&一致する部品と交換)。

その違いはバイトそして特徴これは、文字ごとのマルチバイトロケール(たとえば、標準のUTF-8など)にありますが、拡張されたシングルバイト文字セットでエンコードされたテキストを処理する場合に意味があります。

たとえば、

$ locale charmap
UTF-8
$ echo Москва | iconv -t iso-8859-5 | sed 's/./\\section{}&/' | iconv -f iso-8859-5
Москва

(iso-8859-5でエンコードされている場合、モスクワの結果バイト値のどれもUTF-8で有効な文字を形成しないため、/./一致するものはありません。)

挿入するテキストがASCIIなので、エンコードは問題にならないので、驚きを避けるためにロケールをCに変更できます。

$ echo Москва | iconv -t iso-8859-5 | LC_ALL=C sed 's/./\\section{}&/' | iconv -f iso-8859-5
\section{}Москва

おすすめ記事