Есть ли способ очистить строки между двумя шаблонами с помощью sed или grep?

Tu primer comando:

find /INTER/f/d/o/ -type f -name "test*.txt" -mtime +190 -exec mv /INTER/f/d/o/"test*.txt" /INTER_ARCHIVE/f/d/o/ {} \;

Aquí, asumo que querrá mover los archivos encontrados que coincidan con el patrón y que sean lo suficientemente antiguos. El bit de comando mvtiene un formato incorrecto y debería verse como

-exec mv {} /some/destination/path \;

Es decir, "mover el archivo encontrado({})a algún destino".

No está claro al mirar el comando a dónde desea que se muevan los archivos, pero tal como lo escribió, está moviendo los archivos a los nombres de ruta encontrados. Esto falla ya que mvintenta mover varios archivos a algo que no es un directorio.

En tu segundo comando,

find /INTER_ARCHIVE/f/d/o/ -type f -name "test*.txt" -mtime +400 -exec rm {};

simplemente no ha podido terminar el argumento de -execcorrectamente. El último bit debería verse como

-exec rm {} \;

o simplemente

-delete

si su implementación de findlo admite.

Véase también " Entendiendo la opción -exec de `find`".

1
14.06.2019, 01:17
3 ответа

Вы можете сделать это с помощью sed:

cat logfile | sed -n -e 's/some_string: //p' | sed -n -e 's/ some_other_string//p'

0
27.01.2020, 23:22
$ cut -d' ' -f2 file
stuff_i_am_interested_in
stuff_i_am_interested_in
stuff_i_am_interested_in
stuff_i_am_interested_in

Если это не все, что вам нужно, отредактируйте свой вопрос, уточнив свои требования и предоставив более репрезентативную выборку входных/выходных данных.

2
27.01.2020, 23:22

Сgrep:

grep -Po 'some_string: \K.*(?= some_other_string)' file
grep -Po '(?<=some_string: ).*(?= some_other_string)' file

Сsed:

sed -n 's/some_string: \(.*\) some_other_string/\1/p' file

Если some_stringне в начале строки и some_other_stringне в конце строки, вы можете сделать:

sed -n 's/.*some_string: \(.*\) some_other_string.*/\1/p' file
1
27.01.2020, 23:22

Теги

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