sexta-feira, 25 de novembro de 2016

sed

d - deleta linha
q - linha 1
'3q' - imprime a linha 3
* - quantas ocorrencias tiver
^ inicio da linha


Deleta linhas vazias
sed '/^$/d'

Deleta linhas vazias iniciadas com espaços (tantos quanto tiver)
sed '/^\s*$/d'

Imprime só as linhas com G1
sed -n '/G1/p'

Imprime só a primeira ocorrencia
sed -n '/G1/{p;q;}'


Imprime as 2 primeiras linhas, apaga as demais
head -2
sed '1,2!d'
sed '2q'

Deleta as 2 primeiras linhas e mostra o resto (sem !)
sed '1,2d'


Imprime a linha e o numero da linha
awk '/bla/{print NR":"$0}'
grep -n 'bla' file
sed '/bla/!d;=' file |sed 'N;s/\n/:/'

Achar a PALAVRA EXATA (G1). Se tiver G11 não será contado
grep -w G1

Achar a ocorrencias com G1. Se tiver G11 será contado
grep -c G1

Achar a palavra e mostrar o numero de ocorrencias. Se não tiver o END, ele vai plotar a partir de 1 e acrescentar 1 para cada match. Com end ele só exibe o ultimo numero
grep -w G1 | awk 'END{print NR}'

Adicionando uma linha em vários arquivos
sed -i '$a Comeco da linha que sera adicionada, o arquivo tem que conter pelo menos uma linha lah $=ultima linha e a=append' arquivo.txt arquivo1.txt arquivo2.txt ...













sábado, 19 de novembro de 2016

awk

os comandos em awk são separados por '{}', cada comando fica dentro deles, as condições ficam dentro de () tipo if --> {if () ; print }

echo "NF SEPARA OS ELEMENTOS DA LINHA UMA A UM" | awk '{ for (i = 1; i <= NF; ++i) { print i, $(i); } }'

OFS="\t" --> faz o separador padrão de saída ser tab, daí nao precisa usar printf "%f\t %f" , x,y

BEGIN é usado para executar algo para o inicio do arquivo antes dos comandos
END é usado para executar algo no fim do arquivo
FNR  armazena o elemento lido
RS Record separator, padrão é nova linha


sendo o arquivo awteste.txt contendo:

100 200
200 100
300 300
500 120
333 222

Adicionar a string "X" e "Y" no inicio do arquivo:

cat awteste.txt | awk 'BEGIN{OFS="\t"; print "X", "Y" }{print }'

resulta:

X Y
100 200
200 100
300 300
500 120
333 222

cat awteste.txt | awk 'BEGIN{OFS="\t"; print "X", "Y" } END {OFS="\t"; print "FINAL","ARQUIVO"} {print } ' 

X Y
100 200
200 100
300 300
500 120
333 222
FINAL ARQUIVO

Quando o arquivo está formatado em colunas é muito mais fácil trabalhar, cada coluna fica representada por "$", tipo coluna 1 e 2 são $1 e $2 respectivamente

tendo um arquivo awlinhas.txt., contendo:


primeira linha conjunto um
segunda linha conjunto um
terceira linha também do conjunto um
PULA
primeira linha conjunto dois
segunda linha conjunto dois
terceira linha também do conjunto dois


cat awlinhas.txt | awk 'BEGIN{FS="\n"; RS="PULA\n"} {print $1 ", " $2 ", " $3 }'

primeira linha conjunto um, segunda linha conjunto um, terceira linha também do conjunto um

primeira linha conjunto dois, segunda linha conjunto dois, terceira linha também do conjunto dois


Excluir uma linha contendo uma palavra:

awk '!/pattern/'






sexta-feira, 18 de novembro de 2016

BASH

como usar comparação com if

Bash can't handle floats. Pipe to bc instead:

if [ $(echo " $test > $k" | bc) -eq 1 ]
The error you see though is because the test command (i.e. the [) needs spaces before and after

It is even better to use (( ... )) since you compare numbers like this:

if (( $(bc <<< "$test > $k") ))
The part in the loop should look like this:

if (( $(bc <<< "$test <= 1") ))
then
    echo "output"
elif (( $(bc <<< "$test > $k") ))
then
    echo "output$k"
fi
Relational expressions evaluate to 0, if the relation is false, and 1 if the relation is true [source]. Note however that is a behavior of GNU bc, and it is not POSIX compiant.


FONTE: http://stackoverflow.com/questions/15224581/floating-point-comparison-with-variable-in-bash


while
x=1
while [ $x -le 5 ]
do
  echo "Welcome $x times"
  x=$(( $x + 1 ))  #parenteses precisam estar juntos
done

procurando numero de elementos dentro do array
for word in ${myarr[*]}; do
  echo $word
done | grep -c "hello"
ou
grep -o hello <<< ${myarr[*]} | wc -l



declare -a myArray
myArray=( `cat aux1.txt` )
re=${myArray[0]}
tLen=${#myArray[@]}
unset myArray

Comparar numeros usa-se: eq ne lt gt
Comparar strings   usa-se:  == != < >


bc não dá conta de trabalhar com notação científica. Usar awk no lugar


GREP
-v, --invert-match        select non-matching lines

grep -v '^Nov 06' file

grep -Ev '^(ATOM|CONECT|HETATM|TER|END)' /path/to/your/file


grep -E '^(C|P)' coordenadas_finais.coor

grep -e 'C' -e 'P' coordenadas_finais.coor > b.coor
grep '^V' coordenadas_finais.coor > c.coor







sábado, 12 de novembro de 2016

Editor de PDF

Master PDF Editor --> Bom, tem pacote .deb
Diz ser pago mas dá pra usar
The Linux-based version is free for non-commercial use.


PDFEdit --> Não tem mais no repositório Debian, era bom, parece que saiu porque depende do qt3, é antigão

http://www.pdfescape.com/



quarta-feira, 2 de novembro de 2016

moso bamboo seeds

Sowing Way:
1. Soak the seed with water for half hours, then disinfect the seed with 0.3% potassium permanganate for 2 to 4 hours
2. Clean the seed with water and soak them for 24 hours
3. Take out the seed and dry them for 1 to 2 hours
4. Dig a few small holes in soil, then sow 3 to 4 seeds in each hole, cover with soil about 1.5cm
5. Cover with straw and sprinkle profoundly water
6. Keep the soil wet and weed during germination.
7. It can be transplanted after seedling grows up 10 to 15cm (4 to 6").