2017-08-10 6 views
-1

テキストファイルで4桁の数字で始まる行をインデントしようとしています。数字で始まるテキストファイルの行をインデントする

私はこのコマンドを試しましたが、これは動作しますが、数字で始まる行をインデントする方法はどうでしょうか。

sed 's/^/  /' somefile 

私は上記のコマンドを試しましたが、すべてをインデントします。

答えて

3

あなたは 書き込みs///コマンドの前に、数字で始まる行だけを選択するフィルタを追加することができます。

あなたのコメントに基づいて
sed -e '/^[0-9]/s/^/ /' somefile 

を、あなたの入力はcat -nの出力から来て、 た印刷物行は番号が付けられていますが、行は番号で始まらず、左側にスペースが入ります。 行をインデントする場合は、のスペースが0以上のスペースで始まり、その後に番号が続く場合は、フィルタを調整する必要があります。 これは単に*(スペースと*)を挿入するの問題です:

sed -e '/^ *[0-9]/s/^/ /' somefile 
+0

これは何もしないようです。 –

+0

これは動作しますが、番号の付いたファイルでは表示されません。この例は私の元の質問に掲載されています。私はcat -nファイル>ファイルアウトで作成されたファイルを持っています –

+0

sed -e '/^[0-9]/s/^//' output13 = works-1空白の前に0-9 –

0

あなたがそうのように、4つのスペースで番号の前にスペースやタブ文字を置き換えるために試みることができます。

sed 's/^[ \t]*\([0-9]\+.*\)/ \1/' file 

そして、あなたのファイルはcat -nの出力であるため、実際にはすべての行が数字で始まるので、番号を確認する必要はありません。

sed 's/^[ \t]*\(.*\)/ \1/' 
関連する問題