私のファイルに文字列があります。
7017556626 TEST BSAB 20191108 TEST123 3333 1111 BSAB 11
7007760674 TESTCHAS 20191108 TEST123 4444 5555 CHAS 22
7017556626 TEST 20191108 TEST123 3333 1111 CHAS 33
7017556626 TEST SSEQ 20191108 TEST123 2222 7777 BSAB 44
7007760674 TESTCHAS 20191108 TEST123 1111 0000 55
場所16の前にスペースを追加する必要があります。
7017556626 TEST BSAB 20191108 TEST123 3333 1111 BSAB 11
7007760674 TEST CHAS 20191108 TEST123 4444 5555 CHAS 22
7017556626 TEST 20191108 TEST123 3333 1111 CHAS 33
7017556626 TEST SSEQ 20191108 TEST123 2222 7777 BSAB 44
7007760674 TEST CHAS 20191108 TEST123 1111 0000 55
どうすればいいですか?
ベストアンサー1
GNU sed
拡張モードでは:
sed -Ee 's/^(.{15})([^ ])/\1 \2/' file
別の方法を使用してくださいGNU sed
:
sed -e '
h ; # hold a copy in case we need it
s/./\n&/16; # place a marker before the 16-char in the current line
/\n /g ; # in case the marker sees a space to its right, revert the changes
s/\n/ / ; # in case not then remove the marker
' file
そしてPerl
:
perl -lpe '$_ = "@{[unpack q[A15A*]]}" if index($_," ",15) != 15' file
結果:
7017556626 TEST BSAB 20191108 TEST123 3333 1111 BSAB 11
7007760674 TEST CHAS 20191108 TEST123 4444 5555 CHAS 22
7017556626 TEST 20191108 TEST123 3333 1111 CHAS 33
7017556626 TEST SSEQ 20191108 TEST123 2222 7777 BSAB 44
7007760674 TEST CHAS 20191108 TEST123 1111 0000 55