Eu quero usar o tac
para inverter um caractere de arquivo de texto por caractere. Na página de informações do coreutils, encontrei um exemplo dizendo: #Reverse a file character by charactertac -r -s 'x\|[^x]'
No entanto, a execução tac -r -s
parece abrir a entrada padrão em vez de imprimir o arquivo. O que 'x\|[^x]'
significa e o que devo fazer?
Também observei que a saída para tac [file]
e tac -r [file]
é a mesma e é a mesma que cat [file]
. Ainda não consigo descobrir char por char reverse.
Para reverter um arquivo caractere por caractere usando
tac
, use:Isso está documentado em
info tac
:-r
faz com que o separador seja tratado como uma expressão regular .-s SEP
usaSEP
como separador .x\|[^x]
é uma expressão regular que corresponde a todos os caracteres (os que sãox
e os que não sãox
).tac file
não é o mesmo quecat file
a menos quefile
tenha apenas uma linha.tac -r file
é o mesmotac file
porque o separador padrão é\n
, que é o mesmo quando tratado como uma expressão regular e não.Se você não está preocupado com o caractere LF (veja os comentários de mosvy), é muito mais eficiente usá- lo
rev
em vez detac -r -s 'x\|[^x]'
, canalizando-o,tac
se necessário.Essa solução é muito mais barata do que
tac -r -s 'x\|[^x]'
porque as expressões regulares tendem a desacelerar drasticamente as coisas.