sábado, 18 de agosto de 2018

grep/sed/tr/awk/VIM alguns comandos

adiciona uma nova linha com a palavra "frase" abaixo de qualquer linha que contenha # 
sed  '/\[option\]/a frase' input > output 

---
transforma todo o arquivo em uma única linha - html compress
cat file.html | tr -d '\n' > output
ou 
awk -i inplace '{print}' ORS='' x.html
ou 
awk -i inplace '{printf "%s ",$0}' x.html
ou
paste -s -d" " file.html > output.html
ou
sed -i -e :a -e '$!N; s/\n/ /; ta' file.html
 ---
 
outras formas de compressão de html
sed -i ':a;N;$!ba;s/>\s*</></g' file.html  
 
comprimir css
cat style.css | sed -e 's/^[ \t]*//g; s/[ \t]*$//g; s/\([:{;,]\) /\1/g; s/ {/{/g; s/\/\*.*\*\///g; /^$/d' | sed -e :a -e '$!N; s/\n\(.\)/\1/; ta' > style.min.css  
 
Adicionar texto no começo do arquivo
sed -i '1s/^/TEXTSTART\n/' arquivo.txt
ou

sed -i '1iTEXTSTART' arquivo.txt
 
ou OBS: apaga todo o conteudo anterior
echo -e "TEXTSTART\n$(cat todo.txt)" > todo.txt
 
Adicionar texto no final da linha do arquivo
sed -i -e '$aTEXTTOEND' arquivo.txt 
 
adicionar texto no começo e no final
sed -e $'1i\\\nSTART' -e $'$a\\\nEND' arquivo.txt

combinar 2 arquivos
sed -n 'p' file1 file2 > file3

pegar todo texto entre duas palavras
sed -n '/PATTERN1/,/PATTERN2/p' arquivo.txt
 
inverte as letras maiusculas para minusculas 
echo "TeStE" | sed -E 's/([[:lower:]])|([[:upper:]])/\U\1\L\2/g' 
 
adiciona # após 8 caracteres 
echo "teste1 teste2 teste3" | sed 's/./&#/8'

adiciona # no começo de todas as palavras teste2
echo "teste1 teste2 teste3"| sed 's/teste2/#&/g' 
 
quebra uma linha que termina com caracter ponto e virgula
sed -i 's,;,\n,g' file 

remover excesso de espaços 
echo "     abc     " | xargs 
 
ou 
 
echo "     abc     " | tr -s " " 
 
ou
 
echo "     abc     " | awk '$1=$1' 
 
ou
 
echo "     abc     " | sed -e 's/  */ /g' -e 's/^ *\(.*\) *$/\1/' 
 
ou
 
echo "     abc     " | sed 's/^ *//g' | sed 's/$ *//g' | sed 's/   */ /g' 
 
ou
 
echo "     abc     " |column -t|tr -s " "
 
ou

echo "     abc     " | tr -s " " | xargs 
 
----- 




remover texto entre palavras chaves
sed '/start-1/,/stop-1/d'  arquivo 
 
start-1
TEXTO
TEXTO
stop-1

start-2
TEXTO
TEXTO
stop-2
 
OBS: no exemplo acima será deletado todo conteúdo entre start-1 e stop-1
-----


----- 
adicionar linha acima de cccc
sed -e 's/cccc/linha_nova\ncccc/' arquivo
aaaa
bbbb
linha_nova
cccc
dddd
 
adicionar linha abaixo de cccc 
sed -e 's/cccc/cccc\nlinha_nova/' arquivo
aaaa
bbbb
cccc
linha_nova
dddd
 
ou
 
sed '/cccc/i linha_antes'  arquivo
aaaa
bbbb
linha_antes
cccc
dddd

sed '/cccc/a linha_depois'  arquivo
aaaa
bbbb
cccc
linha_depois 
dddd
----
adiciona # no final de todas as palavras teste2
echo "teste1 teste2 teste3" | sed 's/teste2/&#/g'

mover bloco de texto para outro arquivo
sed -n -e '/Start/,/Stop/p' input > output

alinhar @
sed 's/@/,,,,@/' arquivo.txt | column -t -s,,,, | sed -E 's/^([^ ]+)( +)/\2\1/'
 
separa numeros de letras  
sed -r 's/([0-9])([a-zA-Z])/\1 \2/g; s/([a-zA-Z])([0-9])/\1 \2/g' input > output
 
desce todos os numeros uma linha e adiciona ponto 
sed -r 's/[0-9]+/\n\n&. /g' input > output  
  
desce uma linha todas as linhas que contenham #
sed -r 's/#+/\n&/g' input > output 
 
apaga tudo que estiver antes de : 
sed 's/.*://' input > output
 
apaga tudo depois de :
sed -e 's/\:[^\.]*$//' input > output

dois pontos após numeros
echo "000000" | sed 's/\(..\)/\1:/g;s/:$//'

deleta os dois primeiro caracteres de todas as linhas
sed 's/^.\{,2\}//' input > output
 
deleta apenas os primeiros numeros junto com . 
sed 's/^[0-9.]\+ //' input > output

adicionar espaço no final de cada linha 
sed 's/$/ /' input > output

juntar todas as linhas
cat arquivo.txt | { tr -d '\n'; echo; } > arquivosaida.txt

remover linhas em branco
sed '/^\s*$/d' input > output

adicionar nova linha depois em toda linha que tiver um caractere @ 
sed -i 's/@/\n/g' input > output
 
adiciona *** no final de todas as linhas que tenham #
sed 's/^#.*/& ***/' input > output
 
adiciona *** na frente de todas as linhas que tenham # 
sed 's/.*#/*** &/' input > output
 
substituir ponto por espaço
sed 's/[.]/ /' input > output
 
substituir ponto por tab 
sed 's/[.]/\t/' input > output
 
remover caracteres estranhos
sed -e 's/[^a-zA-Z*0-9]/ /g;s/*/ /g' input > output
 
remover todos os caracteres ^L
sed 's/\o14//g' input > output
 
remove # de todas as linhas
echo "68# 68#" | sed 's/\#//g' 
 
as primeiras letras aos números
sed 's/\([0-9]\) \([a-zA-Z0-9]\)/\1\2/g' input > output 
 
remover tags html
sed -e 's/<[^>]*>//g' input > output
 
textos e numeros na mesma linha
cat file.txt | { tr '\n' ' '; echo; } | sed 's/[0-9]\+/\n&/g' > output
 
VIM adiciona a palavra WORD nas linha de 10 até 20 
:10,20s/^/WORD/ 

colocar 0 na frente de unidades ex: 1 ficara 01
sed 's/\<[0-9]\>/0&/' ./input > output

remover todas as tabs
grep -Po '\S+' input.txt > output

contar quantas vezes aparece uma palavra ou numero
grep -c "04" input.txt

listar apenas o nome do arquivo sem extensão - ls
ls -1 | sed 's/\.extensao//g'
ou
basename --suffix=.extensão -- *.extensão

mostra apenas a sexta linha de um arquivo
sed -n '6p' input.txt
 

palavras na mesma linha/paragrafo
awk -v RS= '{$1=$1}1' file



palavras na mesma linha que contenha numeros
tr '\n' ' ' < test | sed 's/[0-9]*:[0-9]*/\n&/g'


juntar linhas OBS: para adicionar mais linhas adicione N;
sed -i 'N;N;N;N;s/\n/ /g' arquivo

mostrar nome do arquivo que tenha palavra
find . -type f -exec grep -il "PALAVRA" {} /dev/null \;
ou
find . -type f | xargs grep -l "test"
ou
grep -rE '(PALAVRA)'

mostrar nome do arquivo que tenha palavra ou nome
grep -iRl "PALAVRA OU NOMEDOARQUIVO"

substituir virgula por ponto na terceira linha OBS: caso queira em todas tire o numero 3 da frente do s
sed -i '3s/,/./g' arquivo
converte todas as letras para maiusculas
sed -i 's/[a-z]/\U&/g' arquivo
converte todas as letras para minusculas 
sed -i 's/[A-Z]/\L&/g' arquivo
---------------
renomear todos os arquivos txt para maiusculo
for i in *.txt; do
 mv "$i" $(echo "$i" | sed -r -e 's/.*/\U&/' -e 's/\.TXT$/\u.txt/');
done
---------------
renomear todos os arquivos txt para minusculo
for i in *.txt; do
 mv "$i" $(echo "$i" | sed -r -e 's/.*/\L&/' -e 's/\.TXT$/\u.txt/');
done
---------------
substitui apenas o numero 0 dos arquivo
sed 's/^0$/x/' arquivo

---------------
deixa apenas o links do arquivo html
cat arquivo | grep -o '<a .*href=.*>' | sed -e 's/<a /\n<a /g' | sed -e 's/<a .*href=['"'"'"]//' -e 's/["'"'"'].*$//' -e '/^$/ d'
---------------
exibe o texto da palavra 1 até a palavra 2
sed -n '/PALAVRA1:/,/PALAVRA2:/p'
---------------
adiciona texto antes de /
sed -i '/^\//s|^|https://site.org|' arquivo.txt
---------------
organiza links html
sed -e "s/<a href/\\n<a href/g" arquivo
organiza links html
sed -e 's,</a>,\n,g' arquivo
---------------
mostra numero ou palavra depois de R$ 
sed -n 's/.* | R$ \([^ ]*\).*/\1/p' file
---------------
usa palavra numero1 como referencia e mostra decima palavra
awk '/'numero1'/ {print $10}' file
 
---------------
awk '{print NR-1 "," $0}' file 
ou 
nl file
OBS: para gravar as alterações use o comando -> awk -i inplace '{print NR-1 "," $0}' file 
---------------
substitui todos os numeros por xxx
sed 's/[\t ]*[0-9][\t ]/xxx/g; s/[\t ]*[0-9]*[\t ]*$//' file 
 
-------------------
mostrar palavras repetidas
awk 'a[$0]++' file.txt 
ou 
sort file.txt | uniq -c | grep -v '^ *1 '

------
numerar linhas, alternativa para nl, cat -n e grep -n '^' 
comando abaixo tira os numeros depois adiciona novamente, perfeito para numerar notas em programas 
echo "$(sed -i 's/^ *[0-9]\+.//g' file.txt; nl file.txt)" > file.txt
para remover os espaços e tabs comando abaixo
echo "$(sed -i 's/^ *[0-9]\+.//g' file.txt ; nl -s " " file.txt )" > file.txt ; sed -i 's/^[ \t]*//' file.txt
outra alternativa porem é necessário ter instalado o sponge do pacote moreutils
sed -i 's/^ *[0-9]\+.//g' file.txt ; sed '=' file.txt | sed 'N;s/\n/ /' | sponge file.txt

------

Adicionar 5 espaços a cada 20 linhas

awk '{print; if (NR % 20 == 0) {print "\n\n\n\n\n"}}' arquivo_original.txt > arquivo_modificado.txt

------ 
remover espaços de final de linha
sed 's/[[:space:]]*$//' input.txt > output.txt

------
alinhar # 
sed 's/#/\x01#/' input | column -t -s $'\x01' > output

------

remover \

sed 's/\\[ \t]*$//'
input > output

ou

sed 's/\\//g' input > ouput





segunda-feira, 13 de agosto de 2018

shell script - renomear arquivos de acordo com a primeira linha do arquivo

ls -w1 *.txt | while read FILE;
do
mv "$FILE" "$(echo $FILE | head -n 1 $FILE)".txt;
done

# remover caracteres especiais
for file in *; do mv "$file" $(echo "$file" | sed -e 's/[^A-Za-z0-9._-]/_/g'); done &s

OBS: caso queira remover algum outro caracter
rename -v 's/char//' *.txt

google tradutor / google translate no firefox

https://addons.mozilla.org/pt-BR/firefox/addon/google-translator-for-firefox/?src=search

Formatar pendrive em modo grafico - mintstick

para instalar

$ wget -O mintstick_1.3.5_all.deb https://bit.ly/mintstick135alldeb
$ sudo mintstick_1.3.5_all.deb

para abrir
$ sudo mintstick -m format

para gravar imagem
$ sudo mintstick -m iso

ver lista de programas instalados (modo grafico)

para ver os programas instalados utilize o xfce4-appfinder

quinta-feira, 2 de agosto de 2018

bloquiar sites no linux

para bloquiar um site especifico edite o arquivo /etc/hosts com o IP e endereço do site
ex:

abre o arquivo pelo vim
$ sudo vim /etc/hosts

supondo que você queira bloquear o facebook adicione  a seguinte linha ao arquivo

0.0.0.0        www.facebook.com
0.0.0.0        pt-br.facebook.com

salve o arquivo
:wq!

e pronto o facebook foi bloqueado

OBS: Não esqueça de limpar o cache de navegação! 

voltar qualquer programa para modo default

para restaurar as configurações padrões de qualquer programa vá até o diretório .config /home/user/.config e exclua o diretório do programa que deseja o diretório do programa será criado novamente de forma automática quando você executa-lo

Limpando cache/lixo oculto

procure o diretório oculto .cache /home/user/.cache nele você encontrará os diretórios .thumbnail e mozilla esses diretórios contem um monte de lixo eletrônico
você pode excluir esses diretórios que eles serão criados novamente quando você abrir o firefox

ver diretórios e arquivos ocultos no modo grafico

para ver diretórios e arquivos ocultos no modo gráfico
aperte Ctrl+h