计算sed中的字符串长度

达布勒

我被迫在sed. 该字符串始终是a's的非空序列

sed -n ':c /a/! be; s/^a/1/; s/0a/1/; s/1a/2/; s/2a/3/; s/3a/4/; s/4a/5/; s/5a/6/; s/6a/7/; s/7a/8/; s/8a/9/; s/9a/a0/; /a/ bc; :e p'

它很长 :) 所以现在我想知道是否可以使用sedy其他 sed 命令更简洁地重写此脚本

我知道最好使用 awk 或其他工具。然而,这不是这里的问题。

请注意, sed 脚本基本上模拟了十进制全加器

简体中文

我想这是作弊,但是:

sed 's/.//;s/./\n/g'|sed -n '$='

您当然可以将现有版本缩短为:

sed -n ':c s/^a/1/; s/0a/1/; s/1a/2/; s/2a/3/; s/3a/4/; s/4a/5/; s/5a/6/; s/6a/7/; s/7a/8/; s/8a/9/; s/9a/a0/; tc; p'

事实证明使用y/// 可能的,但我认为它只会减少几个字符,并且\u不可移植:

sed -n '
:c;
s/^a/c/;
s/\([b-j]\)a/\u\1/;
y/BCDEFGHIJ/cdefghijk/;
s/ka/ab/;
tc;
y/bcdefghijk/0123456789/;
p
'

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章