在文件中的指定位置插入空格

在文件中的指定位置插入空格

我有这个示例文件:

234234|111||J1X0H8|SERP||R|D|666|M
234235|222||J1X0N5|SERP||C||555|M

对于每一行,我需要在第四列的第三个字符后面插入一个空格,如下所示:

234234|111||J1X 0H8|SERP||R|D|666|M
234235|222||J1X 0N5|SERP||C||555|M

我一直在尝试使用 sed 和 awks 命令,但没有得到积极的结果。我怎样才能做到这一点?

答案1

使用awk,它是

awk -F '|' -v OFS='|' '{sub(/^.../, "& ", $4); print}' file

但这无法就地编辑,因此您必须:

t=$(mktemp)
awk -F '|' -v OFS='|' '{sub(/^.../, "& ", $4); print}' file > "$t" && mv "$t" file

使用 sed,

sed -i 's/^[^|]*|[^|]*|[^|]*|.../& /' file

如果您想验证邮政编码,那么

sed -i 's/^\([^|]*|[^|]*|[^|]*|[[:alpha:]][[:digit:]][[:alpha:]]\)\([[:digit:]][[:alpha:]][[:digit:]]|\)/\1 \2/' file

相关内容