Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Bash 将字符串中的空白替换为零_Bash_Shell - Fatal编程技术网

Bash 将字符串中的空白替换为零

Bash 将字符串中的空白替换为零,bash,shell,Bash,Shell,我的文件看起来像: BRRD P 14 1 812 7 32.82 RESD P 14 1 812 7 32.97 AZEP P 14 1112053 13.87 AZHS P 14 1112053 14.18 BRRD P 1401081207 32.82 RESD P 1401081207 32.97 AZEP P 1401112053 13.87 AZHS P 1401112053 14.18 我需要插入零,使其看起来像: BRRD P 14 1 8

我的文件看起来像:

BRRD P 14 1 812 7 32.82  
RESD P 14 1 812 7 32.97  

AZEP P 14 1112053 13.87  
AZHS P 14 1112053 14.18  
BRRD P 1401081207 32.82  
RESD P 1401081207 32.97  

AZEP P 1401112053 13.87  
AZHS P 1401112053 14.18  
我需要插入零,使其看起来像:

BRRD P 14 1 812 7 32.82  
RESD P 14 1 812 7 32.97  

AZEP P 14 1112053 13.87  
AZHS P 14 1112053 14.18  
BRRD P 1401081207 32.82  
RESD P 1401081207 32.97  

AZEP P 1401112053 13.87  
AZHS P 1401112053 14.18  
因此,第三列应该始终是由10个字符组成的字符串。问题是空字符中缺少零。我想将第3列中的空白字符替换为零

我尝试了
cat temp8 | sed's/^/0/g'| sed's/$/0/g'| sed's//0/g'>temp9
,但它最终看起来像:

BRRD P 1312211336 058.52  
RESD P 1312211336 058.72  
0 00  
AZCT P 131222 055 036.99  
AZFS P 131222 055 00 .0  
我还考虑过在某一行位置插入零,但第3列中的空字符是随机的

有什么想法吗?谢谢大家!

检查下面的代码

x="1401081207 32.82"

echo "${x// /0}"
语法

${varName//Pattern/Replacement}

使用
awk
可以执行以下操作:

awk '{val=$3; for (i=4; i<NF; i++) val = val "0" $i; print $1, $2, val, $NF}' file

BRRD P 1401081207 32.82
RESD P 1401081207 32.97

AZEP P 1401112053 13.87
AZHS P 1401112053 14.18

awk'{val=$3;对于(i=4;ignuawk和
FIELDWIDTHS

$ awk 'BEGIN{OFS=""; FIELDWIDTHS="7 10 6"} {gsub(/ /,"0",$2)} 1' file
BRRD P 1401081207 32.82
RESD P 1401081207 32.97

AZEP P 1401112053 13.87
AZHS P 1401112053 14.18

<--7--><---10---><--6->
$awk'BEGIN{OFS=”“;FIELDWIDTHS=“7 10 6”}{gsub(/,“0”,$2)}1'文件
BRRD P 1401081207 32.82
RESD P 1401081207 32.97
AZEP P 1401112053 13.87
AZHS P 1401112053 14.18

如上所述设置
FIELDWIDTHS
,并将第二个字段中的空格替换为
0
s。
OFS
必须为空。

所需的输出不会将所有空格替换为0。等一下,让我再试一次。在上面的示例0000this0000is000000a000test000bash中,我的输出正在处理我的输出