echo добавить в существующую строку, продолжить строку

Если сценарий выполняется как отдельная программа, то любые перенаправления не переживут завершения процесса; они будут применяться только к неявному /bin/bash yourscript.sh, а не к интерактивной оболочке, запущенной пользователем. Это нормальный случай. Единственное, что может вызвать проблему, это если сценарий был прочитан с помощью source yourscript.sh или подобным образом, чего обычно делать не следует.

0
22.05.2018, 11:04
4 ответа

El archivo ya tiene una nueva línea al final, terminando la línea final. Cualquier cosa que se le agregue, por lo tanto, viene en otra línea. Deberá sobrescribir la nueva línea final, lo que no puede hacer con solo una redirección >>. Probablemente el más fácil de usarsed:

$ seq 1 4 | sed -e '$s,$,stuff/to/append,'
1
2
3
4stuff/to/append

Para que sedmodifique un archivo en el lugar -, use

sed -i -e '$s,$,stuff/to/append,' filename

(Los signos de dólar tienen dos significados allí. El primero $es una dirección que controla en qué línea se ejecuta el siguiente comando, aquí significa la última línea. El segundo $es la notación de expresiones regulares para el final de la línea.)


Para agregar a alguna otra línea que no sea la última, reemplace la primera $con un número de línea o una coincidencia de patrón. Esto agregaría una cadena a cualquier línea que contengafoo:

sed -i -e '/foo/ s,$,stuff/to/append,' filename

Tenga en cuenta que usé comas aquí como separadores para el comando s. Las barras serían más comunes,pero el texto que se añadirá los contiene. El comando spermite usar (casi )cualquier carácter.

Si tiene barras en el patrón utilizado para encontrar la línea correcta, puede usar algo como \,foo,como dirección, es decir, comenzar con una barra invertida y usar cualquier separador que sea conveniente.

1
28.01.2020, 05:05

en lugar de echo usa printf, este no agrega "\n" por defecto

tenga en cuenta que printf es un comando de bash, así que asegúrese de que su shell lo admita

-2
28.01.2020, 05:05

Si desea modificar un archivo existente, puede utilizar el comando sed.

Dado que tiene tanto su cadena para agregar como el número de línea que desea insertar en la cadena:

mystring=":/etc/simmerin/bin/"
lineno=10

Inserte la cadena al principio de la línea:

sed "${lineno}s,^,${mystring}," file

Inserte la cadena al final de la línea:

sed "${lineno}s,\$,${mystring}," file

Inserte la cadena antes de la línea:

sed "${lineno}s,^,${mystring}\n," file

Inserte la cadena después de la línea:

sed "${lineno}s,\$,\n${mystring}," file
0
28.01.2020, 05:05

Su archivo ya tiene un newlineal final del archivo. El carácter de nueva línea tiene un tamaño de 1 byte :use el comando truncatepara reducir el archivo en un byte y luego agregarlo al final del archivo.

truncate -s -1  filename && echo ":/etc/simmerin/bin/" >> filename
0
28.01.2020, 05:05

Теги

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