我有很多字符串,
DATA/PARAMETER.OUTPUT -40.0000 (Number will be variable)
我想将此字符串转换为
DATA/PARAMETER.OUTTPUT 40.0000- (Even though its 2/3/4/6 digit number).
我正在尝试以下代码
sed -n 's/-/$-/gp' input.txt > output.txt
但没有工作。它不考虑$作为行尾,而是用$ - 替换 - 。
我只想放置-40.000减号以结束40.0000 -
答案 0 :(得分:3)
您可以使用反向引用:
$ sed 's/-\([0-9].*\)/\1-/' <<< "string DATA/PARAMETER.OUTPUT -40.0000"
string DATA/PARAMETER.OUTPUT 40.0000-
要确保-
位于数字组合.
:
sed 's/-\([0-9\.]*\)/\1-/' <<< "string DATA/PARAMETER.OUTPUT -40.0000"
答案 1 :(得分:0)
awk '{split($NF,a,"-");$NF=a[2] "-" ;print $0}' filename
示例:
x="string DATA/PARAMETER.OUTPUT -40.0000"
echo $x
string DATA/PARAMETER.OUTPUT -40.0000
echo $x |awk '{split($NF,a,"-");$NF=a[2] "-" ;print $0}'
string DATA/PARAMETER.OUTPUT 40.0000-
要使更改保留在原始文件中:
awk '{split($NF,a,"-");$NF=a[2] "-" ;print $0}' filename > filename.tmp && mv filename.tmp filename