Чи зможе sed зберегти свій вихід у файл?


33

> може це зробити.

echo "text" > file

tee може це зробити.

echo "test" | tee file 

Можна sedце зробити, не використовуючи жодного з перерахованих вище? Чи можливо зберегти висновок sedкоманди у файл, не використовуючи жодного >або tee?


Будь ласка, спробуйте знайти відповідь самостійно, перш ніж розміщувати питання тут. Перше, що ми вимагаємо від наших користувачів - це пошук та дослідження перед публікацією. Все, що вам потрібно було зробити, це - sed '' file > newfileі ви б побачили, що >справді можна використовувати так sedсамо, як і з будь-якою іншою програмою.
тердон

1
Це все ще використовується >оператор. Мене цікавило, чи є команда sed, яка може бути використана замість цього. Але я видалю це питання, якщо воно так погано.
Фолатт

Ага, правильно. Гаразд, це зовсім інше питання. Оскільки ви прийняли sed -iвідповідь, я відредагую ваше запитання та уточніть, що ви хочете.
тердон

Я прийняв, " sed не призначений для перенаправлення даних, як teeі >мається на увазі".
Фолатт

Відповіді:


49

tee і> можуть використовуватися для перенаправлення даних, оскільки вони призначені для перенаправлення даних у Linux.

sed з іншого боку - редактор потоків. sed не призначений для перенаправлення даних, як tee і> мав бути. Однак ви можете використовувати сполучення команд для цього.

використовувати трійник або> з sed

sed 's/Hello/Hi/g' file-name | tee file

або

sed 's/Hello/Hi/g' file-name > file

використовувати sed з опцією -i

sed -i 's/Hello/Hi/g' file-name

останній не перенаправляє, замість цього він внесе зміни у сам файл.


2
Спасибі. Ви зрозуміли моє запитання. Тож відповідь - ні. Я подумав, що sedце власне, можливо, міг би це зробити, оскільки він також здатний створювати резервні файли з -i.bakможливістю.
Фолатт

2
Правильно. Також -i.bak не є фіксованою опцією, ви можете використовувати будь-яке розширення, яке ви хотіли б мати у вашому резервному файлі. для екс. -i.log також буде працювати. :)
ankidaemon

Мені просто хочеться додати, що насправді шукали echo "test" | dd of=file status=none, пригнічуючи вихід ехо-сигналу, не використовуючи неясного перенаправлення виводу 2> /dev/null, а натомість запитували обмеження sed. Мене дуже вразили здібності sed, оскільки він здатний додавати рядки у файл, створюючи мені враження, що sed може робити все, що трійник може зробити і багато іншого.
Фолатт

11

sedмає wкоманду, яка може виконувати те, що вам потрібно:

w ім'я файлу

Напишіть поточний простір шаблону для імені файлу.

sed 'w file'сама по собі матиме такий же ефект, як і tee file. Якщо є інші команди sed, поставте wостанню:

sed 's/This/That/;w file'

Однак це не вплине на -n/--quiet/--silent варіант. Це лише пригнічує вміст, який інакше перейшов би до стандартного виводу.


0

Як ankidaemon правильно вказав, як ми можемо зберегти вихідний файл у файл. Я хотів би додати, що якщо ми виконуємо деякі операції над файлом, тобто замінюємо і хотіли б зберегти вихідний файл у той самий файл. Є -iпрапор, за допомогою sedякого можливі зміни на місці. Однак це створює файл резервного копіювання в процесі. Якщо це не потрібно, це можна зробити, просто передавши порожнє ім'я файлу у -iпрапор.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.