LINUX.ORG.RU

Ответ на: комментарий от niXman

позвольте еще вопрос. каким образом можно изменить строку в оригинальном файле, не создавая промежуточный/временный файл?

спасибо.

niXman ★★★
() автор топика
Ответ на: комментарий от vtVitus

<pedantic-mode>Таки есть промежуточный (что, впрочем, неважно: часто TMPDIR смонтирован как tmpfs). Вроде в plan9 сработало бы перенаправление вывода в исходный файл.

anonymous
()

Есть ешё replace.

Синтаксис:

$ replace что_0 на_что_0 что_1 на_что_1 -- файл_0 файл_1

И так далее. Файлы заменяет.

ChALkeR ★★★★★
()
Ответ на: комментарий от niXman

пытаюсь заменить Си`шный комментарий. но что-то именно с комментарием никак не получается. походу виной всему то ли слеши, то ли астериксы..

в общем есть

/* some comment */

, хочу заменить его на

#define some_define 1

записываю так:

sed -s -i 's|\/* some comment *\/|#define some_define 1|g' file.h

дата изменения файла меняется. значит sed отрабатывает. но ничего в файле не заменяется, значит sed не находит шаблон. что не так делаю?

спасибо.

niXman ★★★
() автор топика
Ответ на: комментарий от n01r

Ты шутишь? rename это для переименования.

replace для замены в содержании текстового файла. И он не молчаливый.

ChALkeR ★★★★★
()
Ответ на: комментарий от n01r
$ man replace
The replace utility program changes strings in place in files or on the standard input.

Invoke replace in one of the following ways:

	shell> replace from to [from to] ... -- file_name [file_name] ...
	shell> replace from to [from to] ... < file_name

from represents a string to look for and to represents its replacement. There can be one or more pairs of strings.

Use the -- option to indicate where the string-replacement list ends and the file names begin. In this case, any file named on the command line is modified in place, so you may want to make a copy of the original before converting it.

replace prints a message indicating which of the input files it actually modifies.

If the -- option is not given, replace reads the standard input and writes to the standard output.

replace uses a finite state machine to match longer strings first. It can be used to swap strings. For example, the following command swaps a and b in the given files, file1 and file2:

	shell> replace a b b a -- file1 file2 ...
ChALkeR ★★★★★
()
Ответ на: комментарий от ChALkeR

> Ты шутишь? rename это для переименования.

Знаю, то же самое подумалось про вас, просто replace не нашелся, ближайшее (по названию) что было. Пардоньте.

replace для замены в содержании текстового файла. И он не молчаливый.

А если это не он, то про молчаливость уже неважно.

Какой пакет (содержит сей исполняемый файл), ежели не секрет?

n01r ★★
()
Ответ на: комментарий от niXman

такой еще вопрос.. вот к примеру, мне нужно заменить что-то, на кусок Си`шного кода, в котором полно всяких символов которые нужно экранировать, их тоже нужно руками экранировать? или есть какой-то более гуманный способ?

спасибо.

niXman ★★★
() автор топика
Ответ на: комментарий от ChALkeR

Спасибо, думалось что-то специфическое (мана не было и --help тоже). С другой стороны тянуть мускул (если не установлен) для одной команды... Похоже на собственный костыль из-за нехватки в стандартных пакетах (coreutils etc.), имхо, использовать его для сабжевого скрипта - не совсем комильфо.

n01r ★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.