sed удаляет несколько символов в окружении цифр - PullRequest
2 голосов
/ 13 июня 2011

У меня есть файл со следующим содержимым:

EMAIL|TESTNUMBER|DATE

somemail@address.com|123456789|2011-02-08T16:36:02Z

Как удалить заглавные буквы T между датой и временем и Z в конце строки, используя sed?

Спасибо!

Ответы [ 3 ]

3 голосов
/ 13 июня 2011

Если формат фиксированный и каждая строка всегда соответствует T \ d \ d: \ d \ d: \ d \ dZ, то вы можете попробовать простое:

$ sed 's/T\(..:..:..\)Z$/ \1/'

(непроверенная)

0 голосов
/ 13 июня 2011

Возможно, есть более причудливый способ, но у меня работает следующий скрипт:

s/\(....-..-..\)T\(.*\)/\1 \2/

s/Z$//

Пример ... встроенный файл:

somemail@address.com|123456789|2011-02-08A16:36:02X
somemail@address.com|123456789|2011-02-08T16:36:02Z
somemail@address.com|123456789|2011-02-08B16:36:02Y

Выход:

D:\>sed -f sedscr testfile

somemail@address.com|123456789|2011-02-08A16:36:02X
somemail@address.com|123456789|2011-02-08 16:36:02
somemail@address.com|123456789|2011-02-08B16:36:02Y
0 голосов
/ 13 июня 2011

Пролистайте:

sed 's/\([0-9]+\)T\([0-9]+\)/\1\2//' | sed 's/Z$//'

Редактировать Боже мой! Я только что понял (спасибо @Fredrik), что долгое время я тратил впустую процессы! Мне стыдно! Теперь я обращена в Церковь Единого Процесса. Вот благословенная версия вышедшего из строя онелинера:

sed 's/\([0-9]+\)T\([0-9]+\)/\1\2//; s/Z$//'  the_file.txt
...