2016-01-12 3 views
-4

У меня естьСтрока манипуляции в сценарии оболочки

string_temp="00112233445566778899AABBCCDDEEFF" 
X=AB 

Мне нужно заменить 5 и 6-й элемент (индекс может быть любым) из строки с содержанием X. вывод должен быть «0011AB33445566778899AABBCCDDEEFF»

Пожалуйста, помогите мне с sed или любым другим простым способом сделать это.

+0

Какую оболочку вы используете? Решение с использованием sed/awk/perl было бы более портативным, но это можно сделать изначально в bash. –

+0

Я могу легко сделать это, преобразовывая строку в массив, но bash не включен на моем hw. –

+0

Я могу сделать sed s /./ 5/A, чтобы заменить 5-й элемент, но я хочу заменить 5-й и 6-й в одиночной команде. –

ответ

0

С GNU sed. Заменить следующие 2 знака после позиции 4 с $ X:

string_temp="00112233445566778899AABBCCDDEEFF" 
X="AB" 
echo "$string_temp" | sed -r "s/(.{4}).{2}/\1$X/" 

Выход:

 
0011AB33445566778899AABBCCDDEEFF 

Избегайте sed «s специальные символы (например .: /) в $ string_temp и $ X.

+0

Не нужно включать вторую обратную ссылку, устранить ее с обеих сторон и вернуть тот же результат. – potong

+0

@potong: Спасибо. Я обновил свой ответ. – Cyrus

Смежные вопросы