A / bin / bash használatával az RHEL 5.8-on és automatizálni akarom egy fájl szerkesztését. Szükségem van a szkriptre a fájl kereséséhez és a fájlban egy sor cseréjéhez. Sor példa:
Other line Current date 01121990 Other line
Keresse meg ezt a sort, és cserélje ki a dátum karakterláncot egy előre meghatározott dátumra. Nem tudom “visszhangozni egy új fájlba, és beírni a dátumomat, mivel ez a fájl egy szerver-specifikus fájlból lesz másolva. Köszönet!
Megjegyzések
-
sed
lenne itt a választott eszköz …
Válasz
your_date="your desired date" sed -i "s/^Current date.*/Current date ${your_date}/" /path/to/file
Ez a legegyszerűbb módszer. Ez feltételezi, hogy minden olyan sor, amely tartalmazza a dátumot, szintén csak az “Aktuális dátum” -val kezdődik.
Ne feledje, hogy a parancsot futtató felhasználói szintnek szintén rendelkeznie kell engedéllyel a fájl szerkesztésére.
-i inline szerkesztést jelent, ami azt jelenti, hogy közvetlenül a fájlt szerkeszted.
^Current date.*
Minden sor kezdőbetűje: Aktuális dátum és bármivel végződik. Más szavakkal, cserélje le az egész sort a sed dolog második /…/ részében lévőre.
A “Double” szót a sed utasítás körül használjuk, hogy a változókat változóként használják, nem pedig karakterláncok.
Megjegyzések
- Köszönöm Lizardx-nek, hogy ' pontosan az, amire szükségem van, tesztelte és tesztelte remekül működik
- nagy örömmel hallom.
Válasz
fájlok helyszíni szerkesztését is elvégezheti ! A szerkesztett fájl inode száma változatlan marad.
file="/path/to/file" your_date="your desired date" ls -i "$file" printf "%s\n" H ",g/^Current date.*/s//${your_date}/" wq | ed -s "$file" ls -i "$file"