2

sed または awk を使用して、書式設定されたテキストの行の途中にゼロを追加したいと思います。

入力ファイルの例

line 1

line 2

line 3

期待される出力

line 01

line 02

line 03
4

6 に答える 6

2

あなたの質問にはいくつかのあいまいさがありますが、with を使用printfawkて 2 番目のフィールドにゼロを埋め込むのはどうですか:

$ awk 'NF==2 { printf "%s %02d\n", $1, $2}' file
line 01
line 02
line 03
line 10
line 100

$ awk 'NF==2 { printf "%s %04d\n", $1, $2}' file
line 0001
line 0002
line 0003
line 0010
line 0100

空白行を削除したくない場合は、awk 'NF==2 { printf "%s %04d\n", $1, $2} NF!=2' file.

于 2013-01-05T17:29:44.727 に答える
0
awk 'NF==2{$2="0"$2}1' your_file
于 2013-01-07T07:12:56.830 に答える
0

後方参照で POSIX 文字クラスを使用する

以下を含む/tmp/fooが与えられた場合:

line 1

line 2

line 3

sed 's/[[:digit:]]/0&/' /tmp/foo次の出力を取得するために呼び出すことができます。

line 01

line 02

line 03
于 2013-01-05T17:16:58.090 に答える
0

awk では、これは非常に簡単です。

awk '{print $1, 0$2}' input.txt > output.txt

この場合、あなたが示した入力テキストはファイルinput.txtにあり、新しいファイルに保存しましたoutput.txt

これもわかりやすいコマンドです。変数は「$1行」テキストであり、$2変数は番号です。このコマンドは、「行」テキストにスペースがないことを前提としています。ある?

于 2013-01-05T17:17:39.227 に答える
0

投稿された質問に対する最も簡単な答えは次のとおりです。

sed 's/ / 0/'

それでもうまくいかない場合は、考慮しなければならないことがたくさんあるので、より代表的な入力と予想される出力を投稿してください。

于 2013-01-05T17:56:30.623 に答える
0

これはうまくいくかもしれません(GNU sed):

sed 's/\</0/2' file
于 2013-01-05T21:54:10.093 に答える