我有这个示例文件:
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