
次のサンプルファイルがあります。
234234|111||J1X0H8|SERP||R|D|666|M
234235|222||J1X0N5|SERP||C||555|M
各行に対して、次のように、4番目の列の3番目の文字の後にスペースを挿入する必要があります。
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