【问题标题】:sed for insert x digit until y digits [closed]sed 用于插入 x 位直到 y 位 [关闭]
【发布时间】:2019-12-06 22:14:32
【问题描述】:

如何添加一些 0(或其他)数字直到 x 位。 (带 sed) 示例:

$ cat blabla
128
19
3
1957

->到这个

0128
0019
0003
1957

我还没有用 sed 尝试过任何东西。

sed 's/[^0-9]//g'

【问题讨论】:

  • 类似的东西? sed 's/^.$/000&/;s/^..$/00&/;s/^...$/0&/' blabla

标签: awk sed add digits


【解决方案1】:

使用 bash:

printf "%.4d\n" $(< blabla)

或使用 awk:

awk '{printf("%.4d\n",$1)}' blabla

输出:

0128 0019 0003 1957年

【讨论】:

    【解决方案2】:

    使用 sed:

    # cat blabla
    128
    19
    3
    1957
    
    # cat blabla | sed -e :x -e 's/^.\{1,3\}$/0&/;tx'
    0128
    0019
    0003
    1957
    

    前置 0 到 4 个字符。

    这是递归的,所以你可以根据需要扩展它。

    选项:

    • 更改“.”到 "[[:digit:]]" 只查找数字。
    • 将“0&”中的“0”更改为不同的值。
    • 如果填充为 10(长度 - 1),则将“{1,3}”更改为“{1,9}”

    【讨论】:

    • 使用条件跳转是个好主意。
    猜你喜欢
    • 2015-05-29
    • 1970-01-01
    • 1970-01-01
    • 2021-08-07
    • 1970-01-01
    • 2019-10-19
    • 1970-01-01
    • 2017-11-15
    • 1970-01-01
    相关资源
    最近更新 更多