Parece que estás diciendo que desea reemplazar la cadena que aparece después de =
, no importa lo que sea —por ejemplo , en los datos de muestra, desea reemplazar Lnreddy37@gmail.com
. Pero está diciendo que, sin importar cuál sea la cadena después de =
, desea reemplazarlo con reddy17777@gmail.com
— aparentemente quieres eso codificado.
Hay algunas variaciones sobre cómo hacer esto. El más simple es
sed 's/RESOURCE=.*/RESOURCE=reddy17777@gmail.com/'
que (gustan todos los siguientes comandos )utiliza el hecho de que .*
significa "coincidir con lo que esté allí". Si no desea escribir RESOURCE=
dos veces, puede acortar lo anterior a
sed 's/\(RESOURCE=\).*/\1reddy17777@gmail.com/'
donde \(
… \)
marca una parte de la cadena de búsqueda como un grupo (puede tener hasta nueve grupos )y \1
significa reemplazar con el primer grupo.
Los comandos anteriores buscarán y reemplazarán RESOURCE=
dondequiera que aparezca en la línea. Entonces, por ejemplo, la entrada
# Lakshminarayana wants to change all occurrences of "RESOURCE=".
RESOURCE=john@yahoo.com
COORDINATOR=paul@hotmail.com
MUSIC_RESOURCE=nasir37@yahoo.com
FOX RESOURCE=The quick brown fox
# Comment: Originally line 2 said RESOURCE=ringo@liverpool.co.uk
se cambiaría a
# Lakshminarayana wants to change all occurrences of "RESOURCE=reddy17777@gmail.com
RESOURCE=reddy17777@gmail.com
COORDINATOR=paul@hotmail.com
MUSIC_RESOURCE=reddy17777@gmail.com
FOX RESOURCE=reddy17777@gmail.com
# Comment: Originally line 2 said RESOURCE=reddy17777@gmail.com
Si desea hacer coincidir solo cuando aparece RESOURCE=
al comienzo de una línea, usar^
:
sed 's/^RESOURCE=.*/RESOURCE=reddy17777@gmail.com/'
o
sed 's/^\(RESOURCE=\).*/\1reddy17777@gmail.com/'
Si desea reemplazar solo el valor del recurso, y no todo el resto de la línea, por ejemplo,
RESOURCE=Lnreddy37@gmail.com TALENT=george@hotmail.com
a
RESOURCE=reddy17777@gmail.com TALENT=george@hotmail.com
eso también se puede hacer. Edite su pregunta para decir exactamente lo que quiere, con explicaciones completas y claras y ejemplos.
OK, elija uno de los comandos anteriores s
. Ahora, si desea editar su archivo en el lugar (como ha indicado ), haga
sed -i { s command } { yourfile }
Si desea producir un nuevo archivo, haga
sed { s command } { oldfile } > { newfile }
En realidad, no escriba{
y}
; están allí sólo para la demarcación.
Две задачи:
echo
добавляет новую строку после каждого вывода. Попробуйте использовать echo -n
в bash или printf
. Условие неверно. Что вам нужно, так это удалить внутренние скобки:
if ((i==1 || i==rows || j==1 || j==cols))
Я сделал описанным ниже способом, и он работал нормально
команда
for i in {1..6}; do echo "*"; done| paste -s; for i in {1..4}; do echo "* *"| awk '{printf "%s%40s\n",$1,$2}'; done;for i in {1..6};do echo "*";done| paste -s
output
for i in {1..6}; do echo "*"; done| paste -s; for i in {1..4}; do echo "* *"| awk '{printf "%s%40s\n",$1,$2}'; done;for i in {1..6};do echo "*";done| paste -s
* * * * * *
* *
* *
* *
* *
* * * * * *