Preciso de um arquivo com o comando sed, tenho um arquivo como este
amb/eng/hello.amb
e preciso que a saída seja como abaixo
amx/eng/hello.amx
amx-grk/eng/hello.amx
Alguém poderia por favor me ajudar?
Preciso de um arquivo com o comando sed, tenho um arquivo como este
amb/eng/hello.amb
e preciso que a saída seja como abaixo
amx/eng/hello.amx
amx-grk/eng/hello.amx
Alguém poderia por favor me ajudar?
eu tenho a entrada
bmb/eng/case.bmb
e a saída deve ser como:
bmb/case.bmb
bmx/eng/case.bmx
O comando que estou usando aqui é
$ echo bmb/eng/case.bmb | sed -E 's/.*/& &/;:a;s/([^ ]* [^\n]*)(bm)b/\1\2x/;ta;s~/~&eng&~2'
bmb/eng/eng/case.bmb bmx/eng/case.bmx
Eu amarrei a modificação do comando acima de várias maneiras, mas não estou obtendo a saída esperada.
Em primeiro lugar, no /tmp/test
caminho do arquivo, tenho os diretórios abaixo
amb
bmb
cmb
Ao executar o find
comando, estou obtendo a lista abaixo de arquivos dentro desses três diretórios:
amb/eng/canon.amb
bmb/eng/case.bmb
cmb/eng/hint.cmb
Estou tentando obter cada arquivo list1
usando um for
loop e com base no tipo de arquivo *.amb
ou *.bmb
naquele *.cmb
IF específico que deve ser executado:
cd /tmp/test
find */ -type f -exec ls {} \; > /tmp/test/list1
for file in `cat /tmp/test/list1`
do
if [ -f *.amb ]
then
sed "s/amb/amx/g" /tmp/test/list1 > /tmp/test/list2
ls /tmp/test/list2 >> /tmp/test/finallist
fi
if [ -f *.bmb ]
then
sed "s/bmb/bmx/g" /tmp/test/list1 > /tmp/test/list2
ls /tmp/test/list2 >> /tmp/test/finallist
fi
if [ -f *.cmb ]
then
sed "s/cmb/cmx/g" /tmp/test/list1 > /tmp/test/list2
ls /tmp/test/list2 >> /tmp/test/finallist
fi
done
echo "*********************"
echo -e "\nFinal list of files after replacing from tmp area"
felist=`cat /tmp/test/finallist`
echo -e "\nfefiles_list=`echo $felist`"
Portanto, minha saída final deve ser:
amx/eng/canon.amx
bmx/eng/case.bmx
cmx/eng/hint.cmx
Preciso de ajuda Mais uma vez, preciso do nome do arquivo original junto com o nome do arquivo de substituição Meu arquivo é:
bmb/case.bmb
saída deve ser como:
bmb/case.bmb
bmx/eng/case.bmx
O comando que estou usando aqui é
sed -E 's/(bm)b/\1x/g;s~/~&eng&~'
resultado:
bmx/eng/menu.bmx
Na verdade, o arquivo é como bmb/case.bmb
Eu quero a saída como bmx/eng/case.bmx
estou usando o comando abaixo
$ sed "s/bmb/bmx\/eng/g"
bmx/eng/case.bmx/eng
Você pode me ajudar a remover o do /eng
comando adicionando awk
// ou qualquer comandocut
trim
Eu sou apenas iniciante em scripts de shell.
Ao executar o comando abaixo, estou obtendo a saída abaixo
$ cd demo
$ ls
dir1 dir2 dir3 dir4 dir5
$
$find . -mtime -2 -type f -regextype posix-egrep -regex ".*/(dir1|dir2|dir3|dir4|dir5)/.+" -exec ls {} \; > /tmp/basefileslist
./dir1/demo1.sh
./dir2/demo2.sh
./dir3/demo3.sh
./dir4/demo4.sh
./dir5/demo5.sh
Eu deveria obter saída sem ./
- eu quero como abaixo
dir1/demo1.sh
dir2/demo2.sh
dir3/demo3.sh
dir4/demo4.sh
dir5/demo5.sh
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