使用 sed 替换‘-’字符

使用 sed 替换‘-’字符

我有一个文本文件,与这个非常相似:

    JACK     BLACK 123456   -1245368 - 
 BRIDGET       RED   1245     548425 + 
  JOHNNY    HOMUSS  55482      -4325 - 

我想使用sed命令将最后一个数字部分的字符替换-为空白' '字符,我的输出如下:

    JACK     BLACK 123456    1245368 - 
 BRIDGET       RED   1245     548425 + 
  JOHNNY    HOMUSS  55482       4325 - 

我正在使用这个,但当然不起作用,因为它替换了-文本文件中的所有字符:

sed -e 's/-/ /g' old.out > new.out

那可能吗?

答案1

如果您的数据格式非常相似,即只有包含数字的最后一列可能包含-,那么您可以简单地gsed表达式中删除:

sed 's/-/ /g' old.out > new.out

如果您想要-从文件中删除所有数字,您可以检查后面是否-跟着一个数字:

sed 's/-\([0-9]\)/ \1/' old.out > new.out

如果你想-从最后一列中删除包含数字,你可以说:

sed 's/-\([0-9]\{1,\}\)\([^0-9]*\)$/ \1\2/' old.out > new.out

相关内容