我有一個目錄31 .CTL文件,這些文件看起來是這樣的:巴什 - 替換字符串的所有文件中,在目錄
load data CHARACTERSET AL32UTF8
infile '../dane/kontakty_Biura_wyborcze.csv' "str '\n'"
append
into table ODI_PUW_OSOBY2
fields terminated by ';'
OPTIONALLY ENCLOSED BY '"' AND '"'
trailing nullcols
(LP CHAR(4000),
WOJEWODZTWO CHAR(4000),
POWIAT CHAR(4000),
GMINA CHAR(4000),
NAZWA_INSTYTUCJI CHAR(4000),
KOD CHAR(4000),
MIEJSCOWOSC CHAR(4000),
ADRES CHAR(4000),
NAZWISKO_I_IMIE CHAR(4000),
FUNKCJA CHAR(4000),
TEL_SLUZB_STACJON_1 CHAR(4000),
TEL_SLUZB_STACJON_2 CHAR(4000),
TEL_SLUZB_STACJON_3 CHAR(4000),
TEL_SLUZB_KOM_1 CHAR(4000),
TEL_SLUZB_KOM_2 CHAR(4000),
FAX_SLUZB_1 CHAR(4000),
FAX_SLUZB_2 CHAR(4000),
EMAIL_SLUZB_1 CHAR(4000),
EMAIL_SLUZB_2 CHAR(4000),
WWW CHAR(4000),
TYP CONSTANT "Biura wyborcze.",
ODI_SESJA_ID CONSTANT "20130717144702"
ODI_STATUS CONSTANT "0",
IMIE EXPRESSION "pg_odi_utils.zwroc_imiona(pg_odi_utils.usun_przyrostki(:NAZWISKO_I_IMIE),0)",
NAZWISKO EXPRESSION "pg_odi_utils.zwroc_nazwisko(pg_odi_utils.usun_przyrostki(:NAZWISKO_I_IMIE),0)"
)
有31個文件這樣的。我需要替換此行中的值:
ODI_SESJA_ID CONSTANT '20130717144702'
到新的時間戳,對所有文件都是一樣的。當前時間戳未知(我指的是當前存在於文件中的值,在本例中爲'20130717144702')。
所以我需要(在目錄中找到的每個文件):
- 行查找從ODI_SESJA_ID開始
- 後「ODI_SESJA_ID常量」與新
- 在文件中的其餘線路替換值應保持不變
什麼是使用bash來做到這一點的最佳方法?我應該使用sed還是類似的工具?怎麼樣?
你是對的,它的工作原理。感謝解決方案。 – user1209216
不客氣。 :-) – iandexter