删除shell中两个字符串之间的任何空格

时间:2015-02-24 08:42:59

标签: bash shell

我有一个像

这样的文本文件
word 1334 1234
word word 32423 23423
word 213 234
word word 32423 234234
word 23423 123423

我希望它是这样的,但忽略了时期

word............1334.......1234
word_word.......32423......23423
word............213........234
word_word.......32423......234234
word............23423......123423

在最后一行,我想删除空格,并在shell脚本中将其设置为wordwordword_word。我在使用columngrepawk时遇到了问题。我想我应该通过转换所有空格来将其保存到新文件中 进入word_word然后使用column -t -s " "制作相等的空格。

1 个答案:

答案 0 :(得分:0)

猜测你的问题意味着“如何通过删除除最后两列之外的列之间的任何空格来强制将这些数据分成三列”,我建议

awk '{ f=""; for (i=1; i<=NF-2; ++i) { f=f $i; $i=""; } $1=f; print }' file

但是,您的最后一行只包含两列,因此会产生异常输出。

$ awk '{ f=""; for (i=1; i<=NF-2; ++i) { f=f $i; $i=""; } $1=f; print }' <<'HERE'
> word 1334 1234
> word word 32423 23423
> word 213 234
> word word 32423 234234
> word 123423
> HERE
word 1334 1234
wordword  32423 23423
word 213 234
wordword  32423 234234
 123423

如果您愿意,可以插入文字下划线; f=f "_" $i