Sua primeira linha na saída desejada contém um espaço inicial, mas suponho que seja simplesmente um erro de transcrição.
O seguinte irá encontrar ./foldername/
no início da linha, e substituí-lo por nada, e similarmente substituir .txt
no final de uma linha com nada.
sed -i 's%^\./foldername/%%;s/\.txt$//' filename
A opção -i
diz para modificar o arquivo "no local" (ou seja, substituir o arquivo original pelo arquivo editado). Em algumas plataformas (notavelmente * BSD, e portanto também MacOS) você precisa de uma opção -i ''
que pode estar vazia para dizer que você não quer que um arquivo de backup seja criado (ou dê algo como -i ~
para salvar o arquivo original como filename~
).
Não é difícil combinar as duas ações em um único regex se você quiser ter certeza de que elas só ocorram quando ambas as condições forem verdadeiras (embora isso complique um pouco as coisas, pois você precisa entender como usar uma referência anterior);
sed -i 's%^\./foldername/\(.*\)\.txt$//' filename
ou você pode adicionar um condicional ao script para abandonar a segunda ação se o primeiro não tiver êxito.