скрипт bash добавляет текст в первую строку файла
Я хочу добавить текст в конец первой строки файла с помощью скрипта bash.
Файл называется /etc / cmdline.txt, который не допускает разрывов строк и нуждается в новых командах, разделенных пробелом, поэтому текст, который я хочу добавить, действительно должен быть в первой строке.
То, что я получил до сих пор:
line=' bcm2708.w1_gpio_pin=20'
file=/boot/cmdline.txt
if ! grep -q -x -F -e "$line" <"$file"; then
printf '%s' "$linen" >>"$file"
fi
Но это добавляет текст после разрыва строки первой строки, поэтому результат неверен.
Мне нужно либо обрезать файл contend, добавить мой текст и ленту строк, либо каким-то образом просто добавить его в первую строку но мои знания скриптов bash недостаточно хороши, чтобы найти решение здесь, и все примеры, которые я нахожу в интернете, добавляют начало/конец каждой строки в файле, а не только первую строку.
3 ответов:
Эта команда
sedдобавит123в конец первой строки вашего файла.sed ' 1 s/.*/&123/' yourfile.txtТакже
sed '1 s/$/ 123/' yourfile.txtДля добавления результата в тот же файл необходимо использовать переключатель
-i:sed -i ' 1 s/.*/&123/' yourfile.txt
Это решение, чтобы добавить "ок" в первой строке на
/etc/passwd, я думаю, что вы можете использовать это в своем скрипте с небольшим количеством "настройки":$ awk 'NR==1{printf "%s %s\n", $0, "ok"}' /etc/passwd root:x:0:0:root:/root:/bin/bash ok
Для редактирования файла можно использовать
ed, стандартный редактор:line=' bcm2708.w1_gpio_pin=20' file=/boot/cmdline.txt if ! grep -q -x -F -e "$line" <"$file"; then ed -s "$file" < <(printf '%s\n' 1 a "$line" . 1,2j w q) fi
ed'команды s:
1: перейти к строке 1a: добавить (это будет вставлено после текущей строки)- мы находимся в режиме вставки и вставляем расширение
$line.: остановить режим вставки1,2jсоединить строки 1 и 2w: написатьq: бросить
Comments