各行の先頭のすべてのスペースをタブに置き換えます。

各行の先頭のすべてのスペースをタブに置き換えます。

各行の先頭のすべてのスペースをタブ文字に置き換えるには?

私はこの目的のためにsedを使用することを好みます。

ベストアンサー1

持ち歩ける。

TAB=$(printf '\t')
sed "s/^  */$TAB/" < file.in > file.out

一部のシェル(少なくともksh93、、zshおよびFreeBSD)はbashmkshこのような内容を拡張するsh特別な形式の引用符()もサポートしています。$'...'\t

sed $'s/^  */\t/' < file.in > file.out

シェルは引用符fishの外側の内容を拡張します。

sed 's/^  */'\t/ < file.in > file.out

sedGNU などの一部の実装では、sedTAB を基本的に意味として認識します。\tしたがって、これらについては次のように動作します。

sed 's/^  */\t/' < file.in > file.out

移植可能でawk二重引用符で拡張されます。\tまた、拡張正規表現を使用するため、x+代わりに使用できますxx*

awk '{sub(/^ +/, "\t"); print}' < file.in > file.out

おすすめ記事