Procurare a lima para a corda específica e remova-a

0

Eu tenho o seguinte arquivo:

./foldername/company_users_policies_changes.txt
"terraform_automated_python","AdministratorAccess"
./foldername/company_groups_policies.txt
"terraform_automated_python","ec2fullacess"
 ........................................

Quero deixar apenas nomes de arquivos não completos (remova tudo, exceto o nome do arquivo somente)

Saída desejada:

 company_users_policies_changes
"terraform_automated_python","AdministratorAccess"
company_groups_policies
"terraform_automated_python","ec2fullacess"
 ........................................
    
por Milister 26.03.2018 / 11:22

2 respostas

1

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.

    
por 26.03.2018 / 12:02
-1
cat changes.txt | awk -F/ '{print $NF}' | sed -e 's/.txt\/$//' | sed -e 's/.txt//'

Saída:

changes
 group_policies_changes
aaaaaaaaaa
 role_assignemnt_changes
"ec2ssmMaintWindow","AmazonSSMMaintenanceWindowRole","ssm.amazonaws.com--ec2.amazonaws.com"
"ec2ssmRole","AmazonEC2RoleforSSM--AmazonSSMFullAccess","ssm.amazonaws.com--ec2.amazonaws.com"
 users_policies_changes
"terraform_automated_python","AdministratorAccess"
    
por 26.03.2018 / 11:31

Tags