使用sed
有没有办法在字符后的一行上替换所有出现的模式?
因此,例如,在完全停止后用下划线替换每个空格会改变这个:
k i c k . t h e . b a b y
进入这个:
k i c k ._t_h_e_._b_a_b_y
谢谢!
答案 0 :(得分:2)
这可能适合你(GNU sed):
sed -r ':a;s/(\.[^ ]*) /\1_/;ta' file
将第一个.
前面的空格替换为_
' s
或者:
sed 's/\./&\n/;h;y/ /_/;H;g;s/\n.*\n//' file
使用保留空间划分和征服。
答案 1 :(得分:1)
有点长,我想不出更短的路,但效果很好:
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