Измените строку char на индекс X Я долго искал, как делать простые манипуляции с строками в UNIX У меня есть эта строка: theStr='...............' И мне нужно изменить 5-й char на A, как это можно сделать? В C# это делается так: theStr[4] = 'A'; // Zero based index. Ответ 1 Это можно сделать с помощью sed, редактора строки потока: echo $theStr | sed s/./A/5 Сначала вы передаете вывод $theStr в sed, который заменяет пятый символ на A. Ответ 2 a="............" b="${a:0:4}A${a:5}" echo ${b} Вот один действительно хороший учебник по обработке строк. Ответ 3 Я не знаю, элегантный ли он или какая версия bash вам нужна, но theStr="${theStr:0:4}A${theStr:5}" Первая часть возвращает первые четыре символа, затем символ "A", а затем все символы, начиная с шестого символа Ответ 4 [email protected]:~$ echo 'replace A please' | sed 's/^\(.\{8\}\).\(.*\)/\1B\2/' replace B please Команда sed выше заменяет символ 8th независимо от того, что это такое, поэтому вам не нужно указывать, какой символ следует заменить. В приведенном выше коде вам просто нужно заменить 8 с желаемой позицией символа. B с символом, который хотите заменить! Итак, для вашего конкретного примера это будет: [email protected]:~$ echo '...............' | sed 's/^\(.\{4\}\).\(.*\)/\1A\2/' ....A.......... Не говоря уже о том, что вы можете заменить A на строку, предоставив строку вместо B или просто удалить A, не предоставив ничего, где B (\1\2)
Ответ 1 Это можно сделать с помощью sed, редактора строки потока: echo $theStr | sed s/./A/5 Сначала вы передаете вывод $theStr в sed, который заменяет пятый символ на A.
Ответ 2 a="............" b="${a:0:4}A${a:5}" echo ${b} Вот один действительно хороший учебник по обработке строк.
Ответ 3 Я не знаю, элегантный ли он или какая версия bash вам нужна, но theStr="${theStr:0:4}A${theStr:5}" Первая часть возвращает первые четыре символа, затем символ "A", а затем все символы, начиная с шестого символа
Ответ 4 [email protected]:~$ echo 'replace A please' | sed 's/^\(.\{8\}\).\(.*\)/\1B\2/' replace B please Команда sed выше заменяет символ 8th независимо от того, что это такое, поэтому вам не нужно указывать, какой символ следует заменить. В приведенном выше коде вам просто нужно заменить 8 с желаемой позицией символа. B с символом, который хотите заменить! Итак, для вашего конкретного примера это будет: [email protected]:~$ echo '...............' | sed 's/^\(.\{4\}\).\(.*\)/\1A\2/' ....A.......... Не говоря уже о том, что вы можете заменить A на строку, предоставив строку вместо B или просто удалить A, не предоставив ничего, где B (\1\2)