UPDATE
Corrigido um problema com alguns emojis sendo seguidos pelo seletor de variação-16 , resultando em uma má formatação.
Veja a resposta do
sed
sed '/.\.\./ s/\(.\)\.\.\(\S*\)\s*\(.*\)\.\./\t\n \t/'
Eu tenho um arquivo no formato de:
⌚..⌛ watch..hourglass
⌨️ keyboard
⏏️ eject button
Onde algumas linhas contêm duas entradas. Eu quero quebrar linhas com 2 entradas em 2 linhas assim:
⌚ watch
⌛ hourglass
⌨️ keyboard
⏏️ eject button
Existe uma maneira rápida de fazer isso?
Meu script:
#!/usr/bin/env bash
wget -O output.txt http://www.unicode.org/Public/emoji/6.0/emoji-data.txt
sed -i '/^#/ d' output.txt # Remove comments
sed -i 's/.*(//' output.txt # Remove columns not needed
sed -i 's|[(),]||g' output.txt # Remove brackets around emoji
sed -i 's/\(.*[^ ]\)[ ]*\(.*\)/ /' output.txt # Move first column to last
sed -i '/^$/d' output.txt # Remove blank lines
Tentei responder @ RomanPerekhrest sobre o seguinte (resposta foi atualizada) :
↔️..↙️ left-right arrow..down-left arrow
↩️..↪️ right arrow curving left..left arrow curving right
⌚..⌛ watch..hourglass done
⌨️ keyboard
e funciona no relógio / ampulheta, mas não os acima (?)
UPDATE
Corrigido um problema com alguns emojis sendo seguidos pelo seletor de variação-16 , resultando em uma má formatação.
Veja a resposta do
sed
sed '/.\.\./ s/\(.\)\.\.\(\S*\)\s*\(.*\)\.\./\t\n \t/'
Outra versão sed
, baseada na resposta do zeppelin, mas mais simples e alinhada - tomando cuidado para que o unicode não seja sempre um único caractere. Testado com gnu sed
.
sed 's/\.\.\([^ ]*\) *\(.*\)\.\./\t\n \t/'
Saída:
↔️ left-right arrow
↙️ down-left arrow
↩️ right arrow curving left
↪️ left arrow curving right
⌚ watch
⌛ hourglass done
⌨️ keyboard
awk :
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:]]+'
- separador de campos
$1~/\S\.\.\S/ && $2~/\S\.\.\S/
- se 2 campos contiverem ..
como subitem separador
A saída:
↔️ left-right arrow
↙️ down-left arrow
↩️ right arrow curving left
↪️ left arrow curving right
⌚ watch
⌛ hourglass done
⌨️ keyboard
Tags text-processing unicode awk sed