Eu tenho o conteúdo como abaixo em um/tmp/myfileslist
test1/a/sample1.xls
test2/demo.sh
Eu quero remover .extensions e conteúdo antes da barra, também a barra deve ser removida. Eu quero a saída como
sample1
demo
Eu tenho o conteúdo como abaixo em um/tmp/myfileslist
test1/a/sample1.xls
test2/demo.sh
Eu quero remover .extensions e conteúdo antes da barra, também a barra deve ser removida. Eu quero a saída como
sample1
demo
Com
awk
(e supõe-se que não haja sufixos de ponto repetidos em seus registros, pois/path/to/some.example.txt
retornará apenas a parte " exemplo ")se você tiver registros como esse, use abaixo.
Sua
cut
abordagem tem o problema de que o número do campo muda de linha para linha.Observe também que "você não deve canalizar
cat
s", em vez disso, forneça o nome do arquivo como atributo ao seu comando de processamento de texto.Faça isso em duas etapas para remover tudo até a barra (
.*/
) e depois tudo a partir do ponto (\..*
):(Isso pressupõe que você deseja remover todas as extensões e deseja apenas o
foo
defoo.tar.gz
.)corte
Você pode pegar o último elemento
cut
se inverter cada linha primeiro, por exemplo:Agora você pode remover a extensão do nome do arquivo assim:
bash
Além disso
cut
,sed
você pode usar a expansão do parâmetro bash para remover a extensão do nome do arquivo do caminho, por exemplo:Dica: use
${f%%.*}
para remover todas as extensões.Usando Raku (anteriormente conhecido como Perl_6)
Exemplo de Entrada:
Saída de amostra:
Resumidamente, o arquivo é lido linearmente usando os
-ne
sinalizadores lineares de não impressão automática. O código é executado em cada linha: Primeiro, o caminho é interpretado como umIO
objeto, para o qual umextension
pode ser identificado/modificado. Dentro dosextension
parâmetros, as partes identificadas são""
substituídas por nada (ou seja, excluídas). Adicionar o:parts
parâmetro (também conhecido como "advérbio") permite a identificação da extensão do arquivo em várias partes. Por fim, obasename
é isolado, removendo todas as partes do caminho - barra e acima.Observe que, como os caminhos de arquivo são entendidos pelo Raku com configurações específicas do sistema operacional, os códigos acima devem funcionar sem modificações no Windows para extrair os elementos corretos dos caminhos do Windows (o Raku entende a barra invertida como um separador de caminho no sistema operacional Windows).
https://docs.raku.org/type/IO/Path
https://docs.raku.org/routine/basename
https://docs.raku.org/routine/extension
https://raku.org
Exemplo de fonte:
https://unix.stackexchange.com/a/731665/227738