Как я могу напечатать узор звезды в виде полого прямоугольника? [дубликат]

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 \1significa 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.

0
11.03.2019, 18:21
2 ответа

Две задачи:

  1. echoдобавляет новую строку после каждого вывода. Попробуйте использовать echo -nв bash или printf.
  2. Условие неверно. Что вам нужно, так это удалить внутренние скобки:

    if ((i==1 || i==rows || j==1 || j==cols))
    
0
28.01.2020, 03:55

Я сделал описанным ниже способом, и он работал нормально

команда

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

*   *   *   *   *   *
*                   *
*                   *
*                   *
*                   *
*   *   *   *   *   *
0
28.01.2020, 03:55

Теги

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