我想使用[0-9][0-9]-[0-9][0-9]
将所有字符串[0-9][0-9]/[0-9][0-9]
替换为sed
。
换句话说,我想将-
替换为/
。
如果我的文字中有某处:
09-36
32-43
54-65
我想要这个改变:
09/36
32/43
54/65
答案 0 :(得分:3)
使用GNU ods output summary=means_out;
proc means data=sashelp.cars mean stackodsoutput;
class make;
var mpg_city mpg_highway;
run;
ods output close;
:
sed
$ echo '09-36 32-43 54-65' | sed -r 's|\<([0-9]{2})-([0-9]{2})\>|\1/\2|g'
09/36 32/43 54/65
启用扩展正则表达式,其中:
-r
- 转义\
字符。( ) { }
和\<
仅匹配字边界(如果表达式只匹配整行,请改用/>
和^
,并省略$
选项) g
用作备用正则表达式分隔符,以便|
可以在没有/
的情况下使用 - 转义。
BSD / macOS \
解决方案看起来会略有不同:
sed
答案 1 :(得分:1)
sed -e 's/\([0-9]\{2\}\)-\([0-9]\{2\}\)/\1\/\2/g'
可能不是最优雅的版本,但对我有用。在我看来,无数的反斜杠使得这一点变得难以理解。你可以通过而不是来提高可读性,使用/来分离模式和替换可能吗?
答案 2 :(得分:1)
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setData(Uri.parse("tel:"+"phonenumber" ));
startActivity(intent);
输入
perl -C -npe 's/(?<!\d)(\d\d)-(\d\d)(?!\d)/\1\/\2/g' file
输出
维基 1-11 22-33 444-44 55-555 66-66百科
77-77
8 88-88
在上面的命令中
维基 1-11 22/33 444-44 55-555 66/66百科
77/77
8 88/88
启用Unicode; -C
使Perl处理每个输入行的脚本; -n
使Perl将脚本的结果打印到标准输出; -p
接受Perl表达式(特别是,它是替换)。在这种模式下(-e
),Perl就像 sed 一样。该脚本将用-npe
分隔的每对数字替换为用斜杠分隔的同一对。
-
和(?<!\d)
是否定的lookaround表达式。
要使用(?!\d)
选项编辑文件,请使用-i
。
如果输入不是文件,您可以通过管道将输入传递给Perl,例如:
perl -C -i.backup -npe ...