#bash #shell #sh
Вопрос:
Поэтому я работал над сценарием , в котором я удалял последние две/одну строку/строку из своего файла, я использовал цикл for и хранил в нем sed (я знаю, что это может быть не лучшим способом), но так как в моем файле может быть максимум 6-7 строк, я использовал его. Теперь я ищу способ , при котором вместо удаления я закомментирую n строк ниже первых двух строк.
For eg : If my test file contains entry First Line Second Line To be commented line 1 To be commented line 2 . . . To be commented line n(n lt; 7) #!/bin/bash IP=$(hostname -I) file_path="/tmp/test" number_of_lines=`wc --lines lt; $file_path` if [ $number_of_lines -eq 4 ] then for i in $(seq 1 2); do sed -i '$d' $file_path; done; elif [ $number_of_lines -eq 3 ] then for i in $(seq 1 1); do sed -i '$d' $file_path; done; fi echo "$IP $HOSTNAME.yyyy.xxxx.com $HOSTNAME" gt;gt; /tmp/test
Этот код удаляет последние две строки или одну строку в зависимости от количества строк в нашем файле , я искал способ закомментировать n строк ниже первых 2 строк(которые являются постоянными).
Комментарии:
1. Используйте диапазоны sed. Читать
man sed
.sed ‘/3,6/{s/^/#/}’
комментарии 4 строки ниже первых 2 (при#
условии, что это комментарий).6
Заменить$
на комментарий до последней строки.2. Да , я использовал эту команду , и я смог внести изменения, мне также пришлось сохранить файл, поэтому в конце я использовал команду mv .. sed ‘3,6 {s/^/#/}’ /tmp/test gt; /tmp/test2 amp;amp; mv /tmp/test2 /tmp/test
3. Проверять
sed -i
.