Shell Script 3 - Vários exemplos

Já leu Shell Script 2 - Estruturas de Controle? Então veremos um bocado de exemplos interessantes.

Criando vários arquivos com um texto aleatório

$ sudo apt-get install gpw
for i in $(seq 1 10); do echo "text$i" > file$i.txt; gpw 7 10 >> file$i.txt; done

Inserindo o conteúdo de vários arquivos dentro de um único arquivo

for i in $(seq 1 10); do cat file$i.txt >> finalfile.txt; done

Juntando vários arquivos em um só

arqs="um.txt dois.txt"
for i in $arqs; do cat $i >> joinedfile.txt; done
arqs="um.txt dois.txt"
cat $arqs > joinedfile.txt
cat joinedfile.txt

Separando um arquivo em vários linha a linha

printf '%s\n' 'Um' 'Dois' 'Três' 'Quatro' 'Cinco' > file.txt
# ou
itens="Um Dois Três Quatro Cinco"; for item in $itens; do echo $item >> file.txt; done

# Separando
while read line; do line=${line}; echo "${line}" > "${line}"; done < file.txt

# Lendo
while read line; do cat "${line}"; done < file.txt

Separando um arquivo em vários linha a linha com a seguinte regra…

SECRET_KEY=apqoie38728cmx8s67xs
ALLOW_HOST=127.0.0.1
$ cat SECRET_KEY
apqoie38728cmx8s67xs
$ cat ALLOW_HOST
127.0.0.1

http://bit.ly/2awZo0d

Substituindo texto no arquivo sem abri-lo

echo "Eu gosto de Java." > linguagens.txt
cat linguagens.txt
sed -i "s/Java/Python/g" linguagens.txt
cat linguagens.txt

Renomeando todos os arquivos numa sequência numérica

# Criando 30 arquivos com nomes aleatórios
for i in $(seq 1 30); do var=`gpw 1 10`; touch $var.txt; done
# Renomenando tudo numericamente
c=0; j=1; for i in *; do ((c++)); if (($c <= 9)); then mv $i 0$j\_$i; else mv $i $j\_$i; fi; ((j++)); done

Numerar Linhas

sed -n "/pattern/{=;p}" arquivo
sed -n "/*/{=;p}" arquivo.txt | sed "{N;s/\n/ /}" > arquivo2.txt
cat -n arquivo.txt > arquivo2.txt
awk '{printf("%5d: %s\n", NR,$0)}' arquivo.txt > arquivo2.txt

Shell Script to print Pyramid of Numbers

#!/bin/bash

#Taking input
read -p "Enter Number:" number

#Outer loop for printing number of rows in pyramid
for((row=1;row<=number;row++))
do

    #Loop for printing required spaces
    for((spaces=row;spaces<=number;spaces++))
    do
        echo -ne " "
    done

    #Loop for printing 1st part
    for((j=1;j<=row;j++))
    do
        echo -ne "$j"
    done

    #Loop for printing 2nd part
    for((l=(row-1);l>=1;l--))
    do
        echo -ne "$l"
    done

    #echo for printing new line
    echo 
done

Leia mais:

http://technicalworldforyou.blogspot.com.br/2014/01/shell-script-to-print-pyramid-of-numbers.html

http://technicalworldforyou.blogspot.com.br/

http://rberaldo.com.br/curso-de-shell-script-modulo-1-scripts-shell-estruturas/