2016-05-13 1 views
0

J'essaye d'écrire un wrapper pour la commande supérieure et de remplacer certaines informations qu'elle me donne par des informations plus utiles. Plus spécifiquement, je veux remplacer les informations d'utilisation de la mémoire qu'il donne par les informations de la commande swap.Utilisation de SED pour substituer une ligne spécifique avec la sortie de commande

est ici le code que j'ai:

#!/usr/bin/csh 

# files and directories 
# /user/bin for who, cut, sort, ps, sed, cat, rm, mv, grep, echo, hostname, swap 
set ubin="/usr/bin" 

# tmp files and directory 
set dir="/tmp" 
set TopData=$dir/"Topdata" 
set SwapData=$dir/"SwapData" 

while (1 == 1) 
     swap -sh > $SwapData 
     $ubin/top -b |sed -e "[email protected]*@[email protected]" > $TopData 
     $ubin/clear 
     $ubin/cat $TopData 
     $ubin/sleep 2 
end 

Dans cet exemple, je tentais d'utiliser SwapData comme un fichier temporaire pour stocker les informations, mais SwapData $ donne juste le chemin du fichier et non les données de toute évidence et Je ne peux pas non plus utiliser la commande swap directement dans l'argument sed (ou toute autre commande).

Répondre

0

Essayez ceci à l'intérieur de votre boucle:

SwapData=`swap -sh` 

Aussi, pourquoi écrire dans csh vous?