2 updated solution
source | link

awk solution:

awk -F'[[:space:]][[:space:]]+' '$1~/\S\.\.\S/ && $2~/\S\.\.\S/{ 
         split($1,a,/\.\./); split($2,b,/\.\./); 
         printf("%s\t%s\n%s\t%s\n",a[1],b[1],a[2],b[2]); next 
     }1' file
  • -F'[[:space:]][[:space:]]+' - field separator

  • $1~/\S\.\.\S/ && $2~/\S\.\.\S/ - if 2 fields contain .. as subitem separator

The output:

↔️  left-right watcharrow
↙️  down-left hourglassarrow
↩️  right arrow curving left
↪️ ⌨️ left arrow curving right
⌚   keyboardwatch
 ⏏️  hourglass done
⌨️    eject button  keyboard

awk solution:

awk '$1~/\S\.\.\S/ && $2~/\S\.\.\S/{ 
         split($1,a,/\.\./); split($2,b,/\.\./); 
         printf("%s\t%s\n%s\t%s\n",a[1],b[1],a[2],b[2]); next 
     }1' file

The output:

   watch
   hourglass
 ⌨️       keyboard
 ⏏️       eject button

awk solution:

awk -F'[[:space:]][[:space:]]+' '$1~/\S\.\.\S/ && $2~/\S\.\.\S/{ 
         split($1,a,/\.\./); split($2,b,/\.\./); 
         printf("%s\t%s\n%s\t%s\n",a[1],b[1],a[2],b[2]); next 
     }1' file
  • -F'[[:space:]][[:space:]]+' - field separator

  • $1~/\S\.\.\S/ && $2~/\S\.\.\S/ - if 2 fields contain .. as subitem separator

The output:

↔️  left-right arrow
↙️  down-left arrow
↩️  right arrow curving left
↪️  left arrow curving right
⌚   watch
   hourglass done
⌨️       keyboard
1
source | link

awk solution:

awk '$1~/\S\.\.\S/ && $2~/\S\.\.\S/{ 
         split($1,a,/\.\./); split($2,b,/\.\./); 
         printf("%s\t%s\n%s\t%s\n",a[1],b[1],a[2],b[2]); next 
     }1' file

The output:

⌚   watch
⌛   hourglass
 ⌨️       keyboard
 ⏏️       eject button