Altera o conteúdo de um arquivo do nome do arquivo

0

Eu quero escrever um script no qual o conteúdo do arquivo seja alterado com base em seu nome de arquivo.

Suponha que eu tenha um arquivo chamado ABC_20161027220153.txt e o conteúdo do arquivo seja

2000|2000_ABC|04|||0000000000||

Eu quero fazer um script em que o conteúdo do arquivo seja alterado, como abaixo

2000|2000_ABC|04|20161027|27.10.2016 22.01.53|0000000000||

Como posso fazer isso?

    
por user197571 31.10.2016 / 16:39

2 respostas

0

Seu script pode pegar o nome do arquivo como um argumento de linha de comando. Você pode então chamar este argumento no script com a variável $ 1 e manipular essa variável da maneira que achar melhor. Por exemplo,

#!/bin/bash
# myscript.sh

year='echo $1 | cut -c 5-8'
month='echo $1 | cut -c 9-10'
day='echo $1 | cut -c 11-12'

# Etc...
# Then...

repstr='echo "$year$month$day|$day.$month.$year $hour.$minute.$second"'

sed -i "s/|||/$repstr/" $1

Em seguida, chame o script assim:

./myscript.sh ABC_20161027220153.txt
    
por 31.10.2016 / 17:13
0
#!/bin/sh

find . -name 'ABC_*.txt' | while read file; do
    res=$( echo "$file" | 
    sed -r 's#\S*_(....)(..)(..)(..)(..)(..).*#|.. ..#' )

    col4=${res%|*}
    col5=${res#*|}

    sed -r -i.bak '
    s#(.*)\|(.*)\|(.*)\|(.*)\|(.*)\|(.*)\|(.*)\|#|||'"$col4"'|'"$col5"'|||#' \
    "$file"
done
    
por 21.01.2017 / 03:22