使用sed
是否有一种方法可以在一个字符后replace一行中所有出现的模式?
因此,例如,在完全停止之后用下划线replace每个空格将会改变这个:
kick . the . baby
进入这个:
kick ._t_h_e_._b_a_b_y
谢谢!
这可能适用于你(GNU sed):
sed -r ':a;s/(\.[^ ]*) /\1_/;ta' file
更换第一个空间的前面的空间.
与_
或s:
sed 's/\./&\n/;h;y/ /_/;H;g;s/\n.*\n//' file
用保持空间分而治之。
有点长,我想不到更短的路,但很好的工作:
sed 'h ; s/[^.]*// ; s/ /_/g ; x ; s/\..*$// ; G ; s/\n//' ^ ^ the pattern to replace
或者用awk
:
awk -F. -vOFS=. '{a=$1 ; $1="" ; gsub(" ","_") ; print a $0}' ^ ^ the pattern to replace