PDA

View Full Version : Linux modificare file


texerasmo
09-04-2004, 11:55
Ciao a tutti ho un file che pesa 100 m
devo sostiuire una tringa dentro questo file è possibile farlon da riga di comando?
non voglio aprirlo con un editor altrimenti si impianta il pc

ilsensine
09-04-2004, 12:11
man dd ;)

ilsensine
09-04-2004, 12:15
(non scordare il parametro conv=notrunc di dd, altrimenti cancelli tutto il resto del file!)

texerasmo
09-04-2004, 12:19
dd ??? "trovaStringa" "SostiutisciStringa" prova.txt
non riesco a capire quele delle opzioni prendere ho provato con swab
ma non mi funziona.
Ho fatto dd -help ma non riesco a trovare una voce che soddisfa il mio caso.

kingv
09-04-2004, 14:11
Originariamente inviato da ilsensine
man dd ;)


come diavolo fai con dd? :wtf:


a me viene in mente:

sed -e 's/stingaDaSosituire/stringaCheSostituisce/g' nome_file >file_destinazione

ma tirare fuori sed per una cosetta del genere potrebbe essere sprecato :O

ilsensine
11-04-2004, 13:25
Originariamente inviato da kingv
come diavolo fai con dd? :wtf:

Avevo chissà come capito che doveva sostituire una stringa dentro un file binario, e questo si può fare facilmente con dd...


a me viene in mente:

sed -e 's/stingaDaSosituire/stringaCheSostituisce/g' nome_file >file_destinazione

ma tirare fuori sed per una cosetta del genere potrebbe essere sprecato :O
No sed è giusto, se il file è di testo.

texerasmo
09-07-2004, 13:45
sto usando il sed per levare una stringa ad un file
ma quando lancio il se ho il file completamente pulito :(




comando = new String[3];
comando[0] = "/bin/sh" ;
comando[1] = "-c" ;
//mi cotruisco la stringa di comando
comando[2] = "sed -e 's/<?xml version=\"1.0\"?>/ /g' "+file_xml_new+" > "+file_xml_new;
Runtime.getRuntime().exec(comando);

kingv
09-07-2004, 14:08
perche' lanci sh -c ?

non puoi lanciare sed direttamente?
se lo lanci da riga di comando funziona?

texerasmo
09-07-2004, 15:12
faccio così altrimenti la jsp non lancia il cmd

no anche da linea di comando non funge

kingv
09-07-2004, 15:38
cerca di far funzionare il sed da riga di comando.

quando funziona come ti aspetti, modifica il codice java e non usare quella redirect ma quando lanci exec() fai qualcosa del tipo:

Process proc = rt.exec("sed ecc.ecc.'");
BufferedReader br = new BufferedReader(new InputStreamReader(proc.getOutputStream()));

e poi leggi i risultati dal buffered reader.

texerasmo
09-07-2004, 16:54
ho notato..


che se faccio così funziona come mai?

comando = new String[3];
comando[0] = "/bin/sh" ;
comando[1] = "-c" ;
//mi cotruisco la stringa di comando
comando[2] = "sed -e 's/<?xml version=\"1.0\"?>/ /g' "+file_xml_new+" > "+file_xml_new2;
Runtime.getRuntime().exec(comando);

Ovvero non vado a scrivere su lo stesso file ma su un file diverso

kingv
09-07-2004, 17:01
Originariamente inviato da texerasmo


Ovvero non vado a scrivere su lo stesso file ma su un file diverso


perche' non tenta di leggere e scrivere dallo stesso file, ho provato e anche a riga di comando c'e' lo stesso problema.
se invece glielo fai leggere tutto prima di scrivere funziona:

cat nome_file|sed -e ecc.ecc. > nome_file

texerasmo
09-07-2004, 17:21
ok
tnks come sempre per la collaborazione