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 '1i
TEXTSTART
' 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