Добавить строку в текстовый файл с терминала

Вы можете попробовать запустить ubuntu без его установки и разделить так, как вам нравится, с lvm. Затем запустите установщик и выберите для него тома lvm. Но вам следует знать, что установка lvm на ubutu 18.04 может значительно замедлить время загрузки. Вы не должны разделять usr и корневой раздел на управляемые системой os.

6
задан 3 November 2010 в 01:34

45 ответов

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

Чтобы добавить строку в начало файла, формат будет таким:

  echo "50 $  (cat file.txt) "& gt;  file.txt  

Если вы получаете , не можете перезаписать существующий файл , вам нужно отключить noclobber

  set + o noclobber   

Теперь вам просто нужно отбросить это в цикле, который прокручивает файлы, которые вы хотите изменить.

  для FILE в $ (ls / mydata /  | grep txt $);  do echo "$ {FILE}" done  

Если это выводит все файлы, которые вы хотите изменить правильно, добавьте команду для изменения файлов (как показано ниже). Если нет, измените инструкцию grep до тех пор, пока она не будет соответствовать тому, что вам нужно.

  для FILE в $ (ls / mydata / | grep txt $);  do echo "50 $ (cat $ {FILE})" & gt;  «$ {FILE}» done  

И если вы хотите, чтобы это было сделано в одной строке:

  для FILE в $ (ls / mydata / | grep txt  $);  do echo "50 $ (cat $ {FILE})" & gt;  "$ {FILE}";  done  

Редактировать

Если вы хотите, чтобы 50 в своей строке, используйте вместо этого echo printf вместе с \n , как показано ниже.

  для FILE в $ (ls / mydata / | grep txt $);  do printf "50 \n $ (cat $ {FILE})" & gt;  "$ {FILE}";  сделано  
2
ответ дан 6 August 2018 в 04:25

Относительно просто добавить текст в конец файлов. Для BASH: echo 50 & gt; file.txt добавит 50 в конец файла file.txt. Оберните это в цикле for так: для $ FILE в 'ls' do echo 50 & gt; & gt; $ FILE; done; для $ FILE в * do echo 50 & gt; gt; $ FILE; done; будет перебирать все файлы в текущем каталоге, добавляя 50 в конец. Обратите внимание, что одиночные кавычки на самом деле `, но это индикатор для разметки кода здесь ... blech. Чтобы добавить его в начало каждого файла, создайте в него временный файл и эхо 50, а затем повторите его содержимое. Затем переименуйте файл, чтобы перезаписать оригинал. Заверните его в скрипт, и вы настроены!

  #! / Bin / bash echo «Добавление 50 к каждому файлу в текущем каталоге».  для $ FILE в * do [[-f "$ i"]] ||  продолжить эхо «50» & gt;  tmp cat "$ FILE" & gt; & gt; & gt;  tmp mv tmp "$ FILE" done  

Это должно работать, но запускать его в тестовом каталоге до того, как что-либо важно.

Изменить: Обновлен сценарий, как это предлагается в книге Махеша комментарий.

1
ответ дан 6 August 2018 в 04:25

Чтобы отредактировать файл, вам нужен редактор. ed и ex - примеры командных редакторов, которые полезны для редактирования файлов из сценария. Вот пример, вставляющий строку в каждый файл с расширением .txt в / mydata, используя ed:

  #! / Bin / bash для файла в /mydata/*.txt;  do printf '% s \n' 0a 50.  w |  ed -s "$ file" done  

Это будет обрабатывать все типы нечетных символов в именах файлов тоже, в отличие от всех примеров, использующих для -loops с ls в ответах, данных до сих пор.

Вот ссылка, описывающая, как использовать ed: http://bash-hackers.org/wiki/doku.php?id = howto: edit-ed

Чтобы справиться с bash, я настоятельно рекомендую прочитать http://mywiki.wooledge.org/BashGuide

3
ответ дан 6 August 2018 в 04:25

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

Чтобы добавить строку в начало файла, формат будет таким:

  echo "50 $  (cat file.txt) "& gt;  file.txt  

Если вы получаете , не можете перезаписать существующий файл , вам нужно отключить noclobber

  set + o noclobber   

Теперь вам просто нужно отбросить это в цикле, который прокручивает файлы, которые вы хотите изменить.

  для FILE в $ (ls / mydata /  | grep txt $);  do echo "$ {FILE}" done  

Если это выводит все файлы, которые вы хотите изменить правильно, добавьте команду для изменения файлов (как показано ниже). Если нет, измените инструкцию grep до тех пор, пока она не будет соответствовать тому, что вам нужно.

  для FILE в $ (ls / mydata / | grep txt $);  do echo "50 $ (cat $ {FILE})" & gt;  «$ {FILE}» done  

И если вы хотите, чтобы это было сделано в одной строке:

  для FILE в $ (ls / mydata / | grep txt  $);  do echo "50 $ (cat $ {FILE})" & gt;  "$ {FILE}";  done  

Редактировать

Если вы хотите, чтобы 50 в своей строке, используйте вместо этого echo printf вместе с \n , как показано ниже.

  для FILE в $ (ls / mydata / | grep txt $);  do printf "50 \n $ (cat $ {FILE})" & gt;  "$ {FILE}";  сделано  
2
ответ дан 7 August 2018 в 22:31

Относительно просто добавить текст в конец файлов. Для BASH: echo 50 & gt; file.txt добавит 50 в конец файла file.txt. Оберните это в цикле for так: для $ FILE в 'ls' do echo 50 & gt; & gt; $ FILE; done; для $ FILE в * do echo 50 & gt; gt; $ FILE; done; будет перебирать все файлы в текущем каталоге, добавляя 50 в конец. Обратите внимание, что одиночные кавычки на самом деле `, но это индикатор для разметки кода здесь ... blech. Чтобы добавить его в начало каждого файла, создайте в него временный файл и эхо 50, а затем повторите его содержимое. Затем переименуйте файл, чтобы перезаписать оригинал. Заверните его в скрипт, и вы настроены!

  #! / Bin / bash echo «Добавление 50 к каждому файлу в текущем каталоге».  для $ FILE в * do [[-f "$ i"]] ||  продолжить эхо «50» & gt;  tmp cat "$ FILE" & gt; & gt; & gt;  tmp mv tmp "$ FILE" done  

Это должно работать, но запускать его в тестовом каталоге до того, как что-либо важно.

Изменить: Обновлен сценарий, как это предлагается в книге Махеша комментарий.

1
ответ дан 7 August 2018 в 22:31

Поскольку вы спросили, commandlinefu.com перечисляет кучу команд и трюков для использования в оболочке, и в нем много материала о манипуляциях с текстовыми файлами.

2
ответ дан 7 August 2018 в 22:31

Чтобы отредактировать файл, вам нужен редактор. ed и ex - примеры командных редакторов, которые полезны для редактирования файлов из сценария. Вот пример, вставляющий строку в каждый файл с расширением .txt в / mydata, используя ed:

  #! / Bin / bash для файла в /mydata/*.txt;  do printf '% s \n' 0a 50.  w |  ed -s "$ file" done  

Это будет обрабатывать все типы нечетных символов в именах файлов тоже, в отличие от всех примеров, использующих для -loops с ls в ответах, данных до сих пор.

Вот ссылка, описывающая, как использовать ed: http://bash-hackers.org/wiki/doku.php?id = howto: edit-ed

Чтобы справиться с bash, я настоятельно рекомендую прочитать http://mywiki.wooledge.org/BashGuide

3
ответ дан 7 August 2018 в 22:31

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

Чтобы добавить строку в начало файла, формат будет таким:

  echo "50 $  (cat file.txt) "& gt;  file.txt  

Если вы получаете , не можете перезаписать существующий файл , вам нужно отключить noclobber

  set + o noclobber   

Теперь вам просто нужно отбросить это в цикле, который прокручивает файлы, которые вы хотите изменить.

  для FILE в $ (ls / mydata /  | grep txt $);  do echo "$ {FILE}" done  

Если это выводит все файлы, которые вы хотите изменить правильно, добавьте команду для изменения файлов (как показано ниже). Если нет, измените инструкцию grep до тех пор, пока она не будет соответствовать тому, что вам нужно.

  для FILE в $ (ls / mydata / | grep txt $);  do echo "50 $ (cat $ {FILE})" & gt;  «$ {FILE}» done  

И если вы хотите, чтобы это было сделано в одной строке:

  для FILE в $ (ls / mydata / | grep txt  $);  do echo "50 $ (cat $ {FILE})" & gt;  "$ {FILE}";  done  

Редактировать

Если вы хотите, чтобы 50 в своей строке, используйте вместо этого echo printf вместе с \n , как показано ниже.

  для FILE в $ (ls / mydata / | grep txt $);  do printf "50 \n $ (cat $ {FILE})" & gt;  "$ {FILE}";  сделано  
2
ответ дан 10 August 2018 в 10:39

Относительно просто добавить текст в конец файлов. Для BASH: echo 50 & gt; file.txt добавит 50 в конец файла file.txt. Оберните это в цикле for так: для $ FILE в 'ls' do echo 50 & gt; & gt; $ FILE; done; для $ FILE в * do echo 50 & gt; gt; $ FILE; done; будет перебирать все файлы в текущем каталоге, добавляя 50 в конец. Обратите внимание, что одиночные кавычки на самом деле `, но это индикатор для разметки кода здесь ... blech. Чтобы добавить его в начало каждого файла, создайте в него временный файл и эхо 50, а затем повторите его содержимое. Затем переименуйте файл, чтобы перезаписать оригинал. Заверните его в скрипт, и вы настроены!

  #! / Bin / bash echo «Добавление 50 к каждому файлу в текущем каталоге».  для $ FILE в * do [[-f "$ i"]] ||  продолжить эхо «50» & gt;  tmp cat "$ FILE" & gt; & gt; & gt;  tmp mv tmp "$ FILE" done  

Это должно работать, но запускать его в тестовом каталоге до того, как что-либо важно.

Изменить: Обновлен сценарий, как это предложено в книге Махеша комментарий.

1
ответ дан 10 August 2018 в 10:39

Поскольку вы спросили, commandlinefu.com перечисляет кучу команд и трюков для использования в оболочке, и в нем много материала о манипуляциях с текстовыми файлами.

2
ответ дан 10 August 2018 в 10:39

Чтобы отредактировать файл, вам нужен редактор. ed и ex - примеры командных редакторов, которые полезны для редактирования файлов из сценария. Вот пример, вставляющий строку в каждый файл с расширением .txt в / mydata, используя ed:

  #! / Bin / bash для файла в /mydata/*.txt;  do printf '% s \n' 0a 50.  w |  ed -s "$ file" done  

Это будет обрабатывать все типы нечетных символов в именах файлов тоже, в отличие от всех примеров, использующих для -loops с ls в ответах, данных до сих пор.

Вот ссылка, описывающая, как использовать ed: http://bash-hackers.org/wiki/doku.php?id = howto: edit-ed

Чтобы справиться с bash, я настоятельно рекомендую прочитать http://mywiki.wooledge.org/BashGuide

3
ответ дан 10 August 2018 в 10:39

Относительно просто добавить текст в конец файлов. Для BASH: echo 50 & gt; file.txt добавит 50 в конец файла file.txt. Оберните это в цикле for так: для $ FILE в 'ls' do echo 50 & gt; & gt; $ FILE; done; для $ FILE в * do echo 50 & gt; gt; $ FILE; done; будет перебирать все файлы в текущем каталоге, добавляя 50 в конец. Обратите внимание, что одиночные кавычки на самом деле `, но это индикатор для разметки кода здесь ... blech. Чтобы добавить его в начало каждого файла, создайте в него временный файл и эхо 50, а затем повторите его содержимое. Затем переименуйте файл, чтобы перезаписать оригинал. Заверните его в скрипт, и вы настроены!

  #! / Bin / bash echo «Добавление 50 к каждому файлу в текущем каталоге».  для $ FILE в * do [[-f "$ i"]] ||  продолжить эхо «50» & gt;  tmp cat "$ FILE" & gt; & gt; & gt;  tmp mv tmp "$ FILE" done  

Это должно работать, но запускать его в тестовом каталоге до того, как что-либо важно.

Изменить: Обновлен сценарий, как это предлагается в книге Махеша комментарий.

1
ответ дан 13 August 2018 в 17:12

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

Чтобы добавить строку в начало файла, формат будет таким:

  echo "50 $  (cat file.txt) "& gt;  file.txt  

Если вы получаете , не можете перезаписать существующий файл , вам нужно отключить noclobber

  set + o noclobber   

Теперь вам просто нужно отбросить это в цикле, который прокручивает файлы, которые вы хотите изменить.

  для FILE в $ (ls / mydata /  | grep txt $);  do echo "$ {FILE}" done  

Если это выводит все файлы, которые вы хотите изменить правильно, добавьте команду для изменения файлов (как показано ниже). Если нет, измените инструкцию grep до тех пор, пока она не будет соответствовать тому, что вам нужно.

  для FILE в $ (ls / mydata / | grep txt $);  do echo "50 $ (cat $ {FILE})" & gt;  «$ {FILE}» done  

И если вы хотите, чтобы это было сделано в одной строке:

  для FILE в $ (ls / mydata / | grep txt  $);  do echo "50 $ (cat $ {FILE})" & gt;  "$ {FILE}";  done  

Редактировать

Если вы хотите, чтобы 50 в своей строке, используйте вместо этого echo printf вместе с \n , как показано ниже.

  для FILE в $ (ls / mydata / | grep txt $);  do printf "50 \n $ (cat $ {FILE})" & gt;  "$ {FILE}";  сделано  
2
ответ дан 13 August 2018 в 17:12

Поскольку вы спросили, commandlinefu.com перечисляет кучу команд и трюков для использования в оболочке, и в нем много материала о манипуляциях с текстовыми файлами.

2
ответ дан 13 August 2018 в 17:12

Чтобы отредактировать файл, вам нужен редактор. ed и ex - примеры командных редакторов, которые полезны для редактирования файлов из сценария. Вот пример, вставляющий строку в каждый файл с расширением .txt в / mydata, используя ed:

  #! / Bin / bash для файла в /mydata/*.txt;  do printf '% s \n' 0a 50.  w |  ed -s "$ file" done  

Это будет обрабатывать все типы нечетных символов в именах файлов тоже, в отличие от всех примеров, использующих для -loops с ls в ответах, данных до сих пор.

Вот ссылка, описывающая, как использовать ed: http://bash-hackers.org/wiki/doku.php?id = howto: edit-ed

Чтобы справиться с bash, я настоятельно рекомендую прочитать http://mywiki.wooledge.org/BashGuide

3
ответ дан 13 August 2018 в 17:12

Другие вопросы по тегам:

Похожие вопросы: