Se uma string tiver um espaço em branco, ainda posso usar tsort na string?

2

manual do coreutils diz

tsort reads its input as pairs of strings, separated by blanks, indicating a partial ordering.

Se uma string tiver um espaço em branco, de acordo com o manual, não posso usar tsort nela e em outras strings. Como eu ainda posso usar o tsort na string e em outras strings? Obrigado.

    
por Tim 17.11.2018 / 17:20

1 resposta

5

Você não pode usar tsort diretamente se algumas de suas strings de entrada contiverem espaço em branco.

Você pode verificar a origem, verá que os delimitadores são codificados para espaço, guia e nova linha e não há nenhuma opção para alterá-los.

Se você quiser usar tsort em um conjunto de dados em que palavras podem conter espaços em branco, minha recomendação seria pré-processar o conjunto de dados para codificar espaços em branco como um caractere não em branco (ou seqüência de caracteres não-brancos). execute tsort nele e, finalmente, pós-processe a saída final para decodificá-lo de volta para o espaço em branco original.

Você provavelmente pode usar sed nas etapas de pré e pós-processamento. O caractere a ser usado para codificar os espaços em branco depende do conjunto de dados. Se houver outros caracteres inválidos (por exemplo, # ou @ , $ ou \ ), talvez você possa usá-los diretamente. Caso contrário, convém considerar uma codificação de dois caracteres (por exemplo, espaço de codificação como \s ) e incluir uma maneira de codificar o próprio caractere de aspas (por exemplo, \ para codificar um único backspace).

    
por 17.11.2018 / 17:43