用 sed 将数字填零到 2 位

Lan*_*nes 19 linux sed openwrt

输入:

201103 1 /mnt/hdd/PUB/SOMETHING
201102 7 /mnt/hdd/PUB/SOMETH ING
201103 11 /mnt/hdd/PUB/SO METHING
201104 3 /mnt/hdd/PUB/SOMET HING
201106 1 /mnt/hdd/PUB/SOMETHI NG
Run Code Online (Sandbox Code Playgroud)

期望的输出:

201103 01 /mnt/hdd/PUB/SOMETHING
201102 07 /mnt/hdd/PUB/SOMETH ING
201103 11 /mnt/hdd/PUB/SO METHING
201104 03 /mnt/hdd/PUB/SOMET HING
201106 01 /mnt/hdd/PUB/SOMETHI NG
Run Code Online (Sandbox Code Playgroud)

0如果只有一个数字,例如1在“天”部分,我该如何添加?我需要这种日期格式:YYYYMM DD。

gle*_*man 18

另一种解决方案: awk '{$2 = sprintf("%02d", $2); print}'


Sie*_*geX 14

$ sed 's/\<[0-9]\>/0&/' ./infile
201103 01 /mnt/hdd/PUB/SOMETHING
201102 07 /mnt/hdd/PUB/SOMETH ING
201103 11 /mnt/hdd/PUB/SO METHING
201104 03 /mnt/hdd/PUB/SOMET HING
201106 01 /mnt/hdd/PUB/SOMETHI NG
Run Code Online (Sandbox Code Playgroud)

  • \&lt; 表示:'word' 的开始 ... [0-9] 表示从 0 到 9 的单个数字 ... \&gt; 表示:'word' 的结尾 ... word:以空格分隔的标记(或开始/结束于行的开始/结束,分别为 \&lt; 和 \&gt;)... PS。我刚试过标点符号..它们也是分隔符。 (2认同)