English 中文(简体)
如何用 shell 脚本替换单位值
原标题:How to replace the unit values with shell scripting

我有一个输出是格式化的输出

weight:121p height:6f money:5 update:8 read:62b query:132 etc

我希望输出没有这样的单位

weight:121 height:6 money:5 update:8 read:62 query:132 etc

我尝试了 etcs," 但它排除了输出中字母 p 的每一次发生 。

我只想在结肠后移除单位。什么是解决问题的最佳办法?

最佳回答

如果您更喜欢perl:

echo "weight:121p height:6f money:5 update:8 read:62b query:132" 
| perl -pe  s/(w+:d+)w* /$1 /g 
问题回答
sed  s/(:[0-9][0-9]*)[a-z]/1/g 

或如果单位的长度可能大于一个字母

sed  s/(:[0-9][0-9]*)[a-z][a-z]*/1/g 
echo "weight:121p height:6f money:5 update:8 read:62b query:132 etc"|awk  {$1=substr($1,0,length($1)-1);$2=substr($2,0,length($2)-1);$5=substr($5,0,length($5)-1);print} 

        weight:121 height:6 money:5 update:8 read:62 query:132 etc

这迫使数字以小数的非数字/非点数为数字。

awk  {for (i = 1; i <= NF; i++) {split($i, a, /:/); if (a[2] ~ /^[[:digit:]]/) {$i = a[1] ":" a[2] + 0}}; print}  inputfile




相关问题
Parse players currently in lobby

I m attempting to write a bash script to parse out the following log file and give me a list of CURRENT players in the room (so ignoring players that left, but including players that may have rejoined)...

encoding of file shell script

How can I check the file encoding in a shell script? I need to know if a file is encoded in utf-8 or iso-8859-1. Thanks

Bash usage of vi or emacs

From a programming standpoint, when you set the bash shell to use vi or emacs via set -o vi or set -o emacs What is actually going on here? I ve been reading a book where it claims the bash shell ...

Dynamically building a command in bash

I am construcing a command in bash dynamically. This works fine: COMMAND="java myclass" ${COMMAND} Now I want to dynamically construct a command that redirectes the output: LOG=">> myfile.log ...

Perform OR on two hash outputs of sha1sum

I want perform sha1sum file1 and sha1sum file2 and perform bitwise OR operation with them using bash. Output should be printable i.e 53a23bc2e24d039 ... (160 bit) How can I do this? I know echo $(( ...

Set screen-title from shellscript

Is it possible to set the Screen Title using a shell script? I thought about something like sending the key commands ctrl+A shift-A Name enter I searched for about an hour on how to emulate ...