split file content

Hi All;

I have input file like below

name char(3)
number number(3)

inputfile

namenumber
xyz123abc509kai330
aca203
ald390afa000als303

I wanted to split like below:-

output like this:-

xyz123
abc509
kai330
aca203
ald390
afa000
als303

I used below:-

awk '{a[$1]=substr($0,1,3)} END {(for i in a) print (i,a)}' inputfile

I got only

xyz123

how to pass variable in susbtr command.

How about this

sed 's/.../&\n/g'
$ cat file
xyz123abc509kai330
aca203
ald390afa000als303

Output:

$ fold -w6 file
xyz123
abc509
kai330
aca203
ald390
afa000
als303

Guru.

1 Like

Hi Chubler,

Thanks. But it is not working.

---------- Post updated at 11:54 PM ---------- Previous update was at 11:52 PM ----------

Hi Guru,

Great. It is wokring.

---------- Post updated at 11:57 PM ---------- Previous update was at 11:54 PM ----------

Hi Guys,

How to achieve this using awk command.

$ awk '{i=1;while(i<=length($0)){print substr($0,i,6);i+=6}}'  file
xyz123
abc509
kai330
aca203
ald390
afa000
als303

Guru.

perl mode

cat test.txt | perl -ne 'chomp; @v = split /(:?.{6})/,$_; map {print( $_ , qq/\n/) if length( $_) } @v'
xyz123
abc509
kai330
aca203
ald390
afa000
als303

---------- Post updated at 01:26 AM ---------- Previous update was at 01:09 AM ----------

for non fixed length, buy same conditions

before:

xsdfyz123abc50239kasdfai330
aca203cocacola2011
ald390afa000als303
cat test.txt | perl -ne "chomp; @v = split /(:?[a-z]+\d+)/i,$_; map {print( $_ , qq/\n/) if length( $_) } @v"
xsdfyz123
abc50239
kasdfai330
aca203
cocacola2011
ald390
afa000
als303
sed -n 's/[a-zA-Z]*[0-9]*/&\n/gp' input | sed '/^$/d'