先頭のスペースをsed
(それらすべて)と一致させる方法は?私は先頭のタブについて話しているのではなく、先頭のスペースについてのみ話している。
Nanoで行った小さなテストから、これは正しいようです。
sed "s/^ //g"
この方法に何か問題がありますか?
注:「それらすべて」とは、1つだけではなく、2つ以上ある場合に、ドキュメント内のすべての先頭のスペースを意味します。
先頭のスペースを削除します。 sed "s/^ *//"
先頭の空白を削除します。 sed "s/^[[:space:]]*//"
先頭のスペースとタブを削除します:sed "s/^[ \t]*//"
(GNU sedで
sed 's/^[[:blank:]]*//'
動作しますsed
)またはsed $'s/^[ \t]*//'
(任意で動作します)または(ksh / Bashなどでリテラルタブを指定しますsed
)
コメントで述べたように、/g
行の先頭は行に1回だけ表示され/g
、パターンを複数回再試行しないため、指定子は何もしません。置換を繰り返すには、条件分岐を明示的に追加する必要があります。sed -e :a -e 's/^ //' -e ta
^ *
空の文字列(スペースなし)にも一致しますが、ここでは問題ではありません。少なくとも1つのスペースがある行を照合する場合は、^ *
(ダブルスペース)または^ +
拡張正規表現を使用します。たとえば、すべてのインデントを正確に2つのスペースに変更するには、sed -e 's/^ */ /'
orを使用しますsed -Ee 's/^ +/ /'
(-E
GNUやFreeBSDなどでサポートされています)
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加