2013-03-20 4 views
1

Je veux lire depuis l'entrée standard, supprimer tout '/' et écrire la sortie sur la sortie standard. Ainsi, un fichier qui contient:script shell utilisant sed

/ab1/1a6/ 17 
/a/b/1 

auront sortie:

ab11a6 17 
ab1 

Je pense que ce devrait être quelque chose comme ceci:

read input 
sed -r 's/\/[^\/]*\/[^\/]*\/.*/"I not sure what do I need to put in here"/g' 
echo $input 

Je ne sais pas vraiment ce que dois-je besoin de mettre la section "remplacer". toute suggestion?

Répondre

3
sed 's./..g' 

Ceci effacera tous / caractères sur chaque ligne, de sorte que vous n'avez pas besoin d'une section remplacer. Vous pouvez utiliser le / comme séparateur et échapper dans le texte: s/\///g ou choisir un symbole de ponctuation différent comme séparateur: s./..g

Donc, si vous voulez transformer un fichier appelé input.txt et écrire la sortie output.txt:

sed 's./..g' input.txt > output.txt 
# or 
sed 's./..g' <input.txt> output.txt 
1

Rien ... comme indiqué ci-dessous:

% echo "/ab1/1a6/ 17" | sed 's/\///g' 
ab11a6 17 
2

Le programme le plus simple à faire ce que vous avez demandé est:

tr -d '/' 

Si vous entrez que vous obtiendrez ce que vous voulez pour la sortie - non/caractères Vous n'avez pas besoin d'une déclaration read ou echo

sed se comporteront les mêmes que d'autres ont montré, tr & sed lu sur stdin et écrire à stdout par défaut:

sed 's/\///g' 
+0

OP a demandé spécifiquement pour 'sed' – hd1