我有这样的文本文件格式
SKI
SKII
SKIII
SKIV
SKV
SKVI
SKVII
我想用 sed 命令把它转换成数字。你能帮我吗?
SK1
SK2
SK3
SK4
SK5
SK6
SK7
非常感谢!
我有这样的文本文件格式
SKI
SKII
SKIII
SKIV
SKV
SKVI
SKVII
我想用 sed 命令把它转换成数字。你能帮我吗?
SK1
SK2
SK3
SK4
SK5
SK6
SK7
非常感谢!
没有简单的方法可以做到这一点。需要蛮力和一些小心:
sed -e 's/SKIII/SK3/' \
-e 's/SKII/SK2/' \
-e 's/SKIV/SK4/' \
-e 's/SKVIII/SK8/' \
-e 's/SKVII/SK7/' \
-e 's/SKVI/SK6/' \
-e 's/SKV/SK5/' \
-e 's/SKI/SK1/' "$@"
一般来说,较长的序列必须在较短的序列之前。这只涉及1-8;概括它有点困难。
实际上需要从 1 到 29 的数字。我该如何处理呢?一样的方法?
如果您放弃了 SK 前缀,那么稍加注意,您就不需要 29 个单独-e
的表达式(尽管这当然可以)。这个脚本会带你到39(测试到31,一个月的最大天数);我相信达到 99 所需的扩展是相当明显的(我认为还有 13 个-e
表达式)。请注意包含零的数字的特殊情况处理。
sed \
-e 's/IX/9/' \
-e 's/XXX$/30/' \
-e 's/XXX/3/' \
-e 's/XX$/20/' \
-e 's/XX/2/' \
-e 's/X$/10/' \
-e 's/X/1/' \
-e 's/VIII/8/' \
-e 's/VII/7/' \
-e 's/III/3/' \
-e 's/II/2/' \
-e 's/IV/4/' \
-e 's/VI/6/' \
-e 's/V/5/' \
-e 's/I/1/' "$@"