Каков самый простой способ добавить строку в начале каждой строки файла из командной строки?

Я ищу способ добавить строку в начало каждой строки (той же строки для каждой строки). Не что-то настраиваемое, а нечто, что будет легко запомнить и доступно на каждой POSIX-совместимой платформе (и каждой оболочке).

7 Solutions collect form web for “Каков самый простой способ добавить строку в начале каждой строки файла из командной строки?”

Вы можете использовать sed :

 sed -i 's/^/your_string /' your_file 

Благодаря комментариям Стефана и Марко, обратите внимание, что опция -i не является POSIX. Способ POSIX, описанный выше, будет

 sed 's/^/your_string /' your_file > tmp_copy && mv tmp_copy your_file 

или perl :

 perl -pi -e 's/^/your_string /' your_file 

объяснение

Обе команды выполняют подстановку регулярных выражений, заменяя начало строки ( ^ ) на нужную строку. Переключатель -i в обеих командах гарантирует, что файл редактируется на месте (т. Е. Изменения отражаются в файле вместо того, чтобы печатать на stdout).

sed должен быть доступен на любой ОС, совместимой с POSIX, и perl должен быть доступен в большинстве современных Unices, за исключением, возможно, тех, которые прошли через усилия по его удалению.

 :|paste -d'foo ' - - - - input > output 

(просто шутите, хотя вы, вероятно, найдете, что это самый быстрый из всех решений, размещенных здесь: -b).

Канонический путь:

 sed 's/^/foo /' < input > output 

Однако его легко адаптировать к произвольным строкам. Например,

 sed "s/^/$var /" 

Работает только в том случае, если $var не содержит символов & , \ , / nor newline.

В этой связи,

 export var awk '{print ENVIRON["var"], $0}' 

или

 perl -pe '$_="$ENV{var} $_"' 

будет работать лучше.

Я представляю решение с использованием awk добавляя строку «foo».

 awk '{ print "foo", $0; }' input > output 

awk является кросс-платформенным и доступен в любой системе POSIX. Это не делает редактирование на месте. Если вы хотите отредактировать файл без создания второго, вам придется использовать временный файл. См. Ответ Джозефа, он показывает синтаксис. Другой взлом – использовать следующий синтаксис, который в основном создает временный файл с тем же именем файла, что и исходный файл.

 { rm file; awk '{ print "foo", $0 }' > file; } < file 

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

 ex sample.txt -c "%s/^/foo /" -c wq 

Существует дополнительное преимущество в том, что команды легки и очевидны для всех, кто разбирается в одном истинном редакторе.

Вы можете использовать perl для этого:

 $ perl -pi -e 's/^/mystring /' afile.txt 

пример

Создайте образец файла.

 $ seq 5 > afile.txt $ cat afile.txt 1 2 3 4 5 

Выполните следующую команду:

 $ perl -pi -e 's/^/mystring /' afile.txt $ cat afile.txt mystring 1 mystring 2 mystring 3 mystring 4 mystring 5 

Просто используя Bash

  while IFS= read -r line; do echo "foo" "${line}" ; done < input > Output 

Использование Python

 python -c "import sys; print 'foo '.join([ l for l in sys.stdin.readlines() ])" < input > Output 

Если вы хотите редактировать на месте

 import fileinput import sys for line in fileinput.input(['inputfile'], inplace=True): sys.stdout.write('foo {l}'.format(l=line)) 

Ссылка ссылки

Или вы можете сделать следующее:

 vi filename.txt 

Esc (чтобы убедиться, что вы находитесь в режиме NORMAL ), а затем введите следующую команду:

 :1,$ s/^/mystring 
  • Извлекать подстроки из каждой строки. Эти подстроки разделены запятыми, формат «name = value»
  • Как распечатать все записи в файле 1, но обратите внимание на записи, которые не соответствуют файлу2?
  • shell-скрипт для выполнения текстовой обработки структуры данных текстовых файлов и небольших изменений содержимого
  • awk, чтобы разграничить второй столбец
  • Получить определенную информацию из файла журнала
  • Как использовать соответствующее регулярное выражение для поиска шаблона в sed?
  • Как найти количество неупорядоченных пар из списка
  • Awk для удаления строки, если аргумент встречается в определенном столбце
  • Как разделять строки в огромном файле данных на основе количества столбцов внутри них в Linux?
  • Как проверить, отсутствует ли какой-либо повторяющийся текст в текстовом файле?
  • Как анализировать тип данных отчета в Bash?
  • База данных библиотек
  • Linux и Unix - лучшая ОС в мире.