Text-Processing
將一行的開頭與那裡的東西匹配?
我想匹配該行包含某些內容的行的開頭。
Perl/Sed 中的命令
's/^.?/\section{}/g'
但這裡的問題是它也替換了句子的第一個字元。
你怎麼能在非空行的開頭添加一些東西?
sed '/./s/^/\\section{}/'
將
\section{}
添加到包含至少一個有效字元的每一行。sed '/^$/!s/^/\\section{}/'
將
\section{}
添加到每個非空行(即包含至少一個byte的行)。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{}Москва