2017-06-30 2 views
-1

Befehl Ersetzen OUTPT:finden und eine Zeichenfolge in der Datei Python

veera:~ # blkid 
    /dev/sda1: UUID="41b8736f-5a43-4938-8b38-8df62fba50d7" TYPE="swap" 
    /dev/sda2: UUID="3717cca6-cbb7-4763-a935-6e01dfa1f83c" TYPE="ext3" 

    file output: 
    veera:~ # cat /etc/fstab 
    /dev/sda1   swap     swap  defaults    0 0 
    /dev/sda2   /     ext3  acl,user_xattr  1 1 

Könnte jemand uns bitte helfen, wie ersetzen/dev/sda1 in Datei UUID/etc/fstab.

nach file replacement es wie folgt aussehen sollte:

veera:~ # cat /etc/fstab 
UUID=41b8736f-5a43-4938-8b38-8df62fba50d7   swap     swap  defaults    0 0 
UUID=3717cca6-cbb7-4763-a935-6e01dfa1f83c   /     ext3  acl,user_xattr  1 1 
+0

Was Sie haben versucht? – fledgling

+4

'your_string.replace (alt, neu)' – void

+0

Was ist dein Betriebssystem? – RomanPerekhrest

Antwort

0

schrieb ich Code die Zeichenfolge als pro Frage Anforderung zu ersetzen.

Bitte bestätigen und lassen Sie mich wissen ist es besser Weg, um dieses

import subprocess 
proc = subprocess.Popen('blkid', stdout=subprocess.PIPE) 
tmp = proc.stdout.read() 

d = {} 
for line in tmp.split("\n"): 
     if ":" not in line: 
       continue 
     key,value = line.strip().split(":", 1) 
     d[key] = value 
with open('/etc/fstab', 'r') as file: 
     filedata = file.read() 
for k, v in d.iteritems(): 
     for line in filedata.split("\n"): 
       if k in line: 
         data = v.strip().split(" ") 
         data = data[0].replace("\"","") 
         filedata = filedata.replace(k, data) 
with open('/etc/fstab', 'w') as file: 
     file.write(filedata) 
0

zu erreichen, wie Sie unter Linux OS sind, ist hier Einzeiler mit awk Werkzeug:

awk -F' |: ' 'NR==FNR{ a[$1]=$2; next } $1 in a { $1=a[$1]; print }' <(blkid) /etc/fstab 

Der Ausgang:

UUID="41b8736f-5a43-4938-8b38-8df62fba50d7"   swap     swap  defaults    0 0 
UUID="3717cca6-cbb7-4763-a935-6e01dfa1f83c"   /     ext3  acl,user_xattr  1 1 
Verwandte Themen