Как поместить длинный текст в оболочку?

В дополнение к ответу Габриеля Ланы обратите внимание, что для чтения содержимого со стандартного входа команде BSD-вставки необходимо указать тире.

руководство по команде вставки

Если для одного или нескольких входных файлов указано '-', то стандартный используется вход; стандартный вход считывается одной строкой за раз, по кругу, для каждого случая "-".

Итак, последнее должно быть изменено, как показано ниже

cut -d / -f 4 file1.txt | paste -sd '|' - | xargs -I{} grep -v -E {} file2.csv

2
24.02.2018, 03:10
2 ответа

Podría usar caracteres de escape antes de cada carácter especial (<, [, >, ]), pero eso sería bastante engorroso en este caso. En su lugar, simplemente puede rodear todo el argumento con comillas simples de la siguiente manera:

$./a.out '<font name="Moronicity" size=12><!-- ignore this comment --><i></i>
<div style="aa">hello</div></font><img src="spacer.gif">
<div style="bb"><img src="spacer.gif"></div>'

Otra opción es colocar la cadena de parámetros

<font name="Moronicity" size=12><!-- ignore this comment --><i></i>
<div style="aa">hello</div></font><img src="spacer.gif">
<div style="bb"><img src="spacer.gif"></div>

en un archivo (por ejemplo,params). Esto permite llamar a su función en combinación con el comando cat, que genera el contenido de un archivo:

$./a.out "$(cat params)"

Tenga en cuenta que $()se usa para ejecutar el comando cat params, y las comillas dobles se usan para incluir la totalidad del archivo como parámetro para a.out. Con la combinación de los dos, podemos pasar el contenido del archivo a los parámetros de su programa.

6
27.01.2020, 21:49

Si necesita que el texto HTML sea un parámetro para el programa, entonces necesita citarlo para protegerlo del shell (que ve menos -que los signos como redirección, entre otras cosas):

./a.out '<font name="Moronicity" size=12><!-- ignore this comment --><i></i>
<div style="aa">hello</div></font><img src="spacer.gif">
<div style="bb"><img src="spacer.gif"></div>'

Si necesita que el texto HTML se envíe al programa como entrada (stdin ), puede citarlo como un documento aquí -. He sangrado aún más la primera línea para indicar que el resto del texto comienza en la columna 1:

./a.out << 'EOF'
<font name="Moronicity" size=12><!-- ignore this comment --><i></i>
<div style="aa">hello</div></font><img src="spacer.gif">
<div style="bb"><img src="spacer.gif"></div>
EOF

Las comillas simples -alrededor de EOFimpiden la expansión de cualquier parámetro en el texto.

11
27.01.2020, 21:49

Теги

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