Sed
sed 從 ics 文件的日期字元串中刪除時區
我有很多格式錯誤的 ics 文件。這是一個例子:
BEGIN:VCALENDAR PRODID:-//cals.sig9.net//ptHolidays VERSION:2.0 BEGIN:VEVENT ORGANIZER;CN=Feriados Portugueses:MAILTO:nuno@sig9.net DTSTART;VALUE=DATE:20221030T020000Z DTEND:20221030T020100Z LOCATION;LANGUAGE=pt_PT;ENCODING=QUOTED-PRINTABLE:Portugal TRANSP:OPAQUE SEQUENCE:0 DTSTAMP:20211209T094211Z SUMMARY;LANGUAGE=pt_PT;ENCODING=QUOTED-PRINTABLE: DST: Hora Inverno PRIORITY:0 CLASS:PUBLIC STATUS:CONFIRMED UID:f59b372983f45e807fdac602160e3b96d5747708d86643e7ba1fc3aacd47087d END:VEVENT END:VCALENDAR
正確地說,我需要將兩者中的日期轉換
DTSTART
為DTEND
,例如,20221030T020000Z
轉換為20221030
.為此,我正在嘗試使用以下命令:
sed -i s/T[[:digit:]]{6}Z//g *.ics
但命令沒有改變,我不知道為什麼。
首先,我需要我的命令才能工作。
然後,我希望它僅適用於
DTSTART
並且DTEND
(我希望DTSTAMP
時間保持不變)以便calcurse
接受我的 ics 文件。
使用
sed
$ sed '/DTSTART\|DTEND/s/\(:[0-9]*\).*/\1/' input_file BEGIN:VCALENDAR PRODID:-//cals.sig9.net//ptHolidays VERSION:2.0 BEGIN:VEVENT ORGANIZER;CN=Feriados Portugueses:MAILTO:nuno@sig9.net DTSTART;VALUE=DATE:20221030 DTEND:20221030 LOCATION;LANGUAGE=pt_PT;ENCODING=QUOTED-PRINTABLE:Portugal TRANSP:OPAQUE SEQUENCE:0 DTSTAMP:20211209T094211Z SUMMARY;LANGUAGE=pt_PT;ENCODING=QUOTED-PRINTABLE: DST: Hora Inverno PRIORITY:0 CLASS:PUBLIC STATUS:CONFIRMED UID:f59b372983f45e807fdac602160e3b96d5747708d86643e7ba1fc3aacd47087d END:VEVENT END:VCALENDAR