schleifenlos
Verwenden Sie zuerst eine Funktion
function sevenc
{
if [ ! -e "$1" ]; then #check if the file exist
echo "File $1 does not exist" #if not exist print echo output
else
sed -i -e 's/- /-/g' "$1" #remove space on the first 10 values
awk '{print $7}' "$1" > /tmp/$(basename $1.txt)_S.txt #print the column number 7 and copy the output in a file
rm "$1" #remove old file
fi
}
- Wenn die Shell eine Funktion erkennt, übergibt sie ein Argument (falls vorhanden an $ 1 $ 2 ... und so weiter).
- Apropos
's / - / - / g' "$ 1" #Entfernen Sie das Leerzeichen auf den ersten 10 Werten
NEIN, es dreht sich alles space-um -auf der Linie, sei da 1, 4, 10 oder 255.
dann keine Notwendigkeit mehr var
sevenc /tmp/1wall_long.txt
sevenc /tmp/1wall_test1.txt
sevenc /tmp/1wall_test2.txt
sevenc /tmp/1wall_test3.txt
sevenc /tmp/3mt_long.txt
sevenc /tmp/3mt_OpenSpace_test1.txt
sevenc /tmp/3mt_OpenSpace_test2.txt
sevenc /tmp/3mt_OpenSpace_test3.txt
sevenc /tmp/3rooms_test1.txt
sevenc /tmp/3rooms_test2.txt
sevenc /tmp/3rooms_test3.txt
sevenc /tmp/20mt_OpenSpace_test1.txt
sevenc /tmp/20mt_OpenSpace_test2.txt
sevenc /tmp/20mt_OpenSpace_test3.txt
(vorausgesetzt, Sie verwenden fileXX var nicht mehr).
schleifenlos (Sol. 2)
Wenn Sie mehr Argumente übergeben möchten und Terdons Optimierungsversuch verwenden möchten
function eight
{
file=$1
destdir=${2-/tmp} # use second arg if defined, else /tmp
exten=${3-S}
if [ ! -e "$file" ]; then #check if the file exist
echo "File $file does not exist" #if not exist print echo output
else
sed -e 's/- /-/g' "$file" \
awk '{print $7}' "$1" > /"$destdir"/$(basename $1.txt)_"$exten".txt #print the column number 7 and copy the output in a file
rm "$file" #remove old file
fi
}
angerufen werden mit
eight /tmp/1wall_test3.txt /my/projec/dir T ## will use /my/project/dir as dit, T as extension
eight /tmp/1wall_test1.txt /my/project ## will use /my/project as dir
eignt /tmp/1wall_test2.txt ## will use default value
Diese Funktionen können in .bashrc definiert und interaktiv verwendet werden.
mit Schleife
while read f
do
if [ ! -e "$f" ]; then #check if the file exist
echo "File $1 does not exist" #if not exist print echo output
else
sed -i -e 's/- /-/g' "$f" #remove space on the first 10 values
awk '{print $7}' "$f" > "/tmp/$(basename $f .txt)_S.txt" #print the column number 7 and copy the output in a file
rm "$f" #remove old file
fi
done <<EOF
/tmp/1wall_long.txt
/tmp/1wall_test1.txt
/tmp/1wall_test2.txt
/tmp/1wall_test3.txt
/tmp/3mt_long.txt
/tmp/3mt_OpenSpace_test1.txt
/tmp/3mt_OpenSpace_test2.txt
/tmp/3mt_OpenSpace_test3.txt
/tmp/3rooms_test1.txt
/tmp/3rooms_test2.txt
/tmp/3rooms_test3.txt
/tmp/20mt_OpenSpace_test1.txt
/tmp/20mt_OpenSpace_test2.txt
/tmp/20mt_OpenSpace_test3.txt
EOF