awk печатает апостроф/одинарную кавычку

libcurl учитывает переменные среды http _проксиhttps _прокси

Так что это очень просто:

export http_proxy=http://yourproxy.example.com:3128/
export https_proxy=http://yourproxy.example.com:3128/
./my-application-exe

источник :https://curl.haxx.se/libcurl/c/CURLOPT_PROXY.html

5
16.06.2020, 15:39
6 ответов

Вот несколько способов:

  1. используйте восьмеричные управляющие последовательности. В системах на основе ASCII -, где 'кодируется как байт 39 (восьмеричное число 047 ), это будет:

    awk '{print "\047" $0 "\047"}' input
    'string1'
    'string2'
    'string3'
    
  2. передать цитату как переменную

     $ awk -v q="'" '{print q $0 q}' input
     'string1'
     'string2'
     'string3'
    
18
18.03.2021, 23:27

Одним из способов заключения строки в одинарные кавычки является использование команды printf gnu xargs:

< file xargs -d'\n' printf "'%s'\n"

Перл

perl -sple '$_="$q$_$q"' -- -q=\'  file

Использование GNU sed:

sed -e "G;H;z;x;y/\n/'/" file 
0
18.03.2021, 23:27

В коде awk просто заключайте апостроф в двойные кавычки. Вы можете объединять строки, помещая их рядом друг с другом (сопоставление ), независимо от того, как эти строки построены (литерал, переменная, ссылка на поле, выражение в скобках, … ).

{ print "'" $0 "'" }

Если этот awk-код включен в сценарий оболочки, а awk-код заключен в литерал -в одинарных кавычках, вы должны организовать передачу символа одинарной кавычки в awk. Используйте одинарную -кавычку -обратную косую черту -одинарную -кавычку -одиночную -кавычку'\''для включения символа одинарной кавычки в литерал оболочки с одинарными -кавычками.

awk '{ print "'\''" $0 "'\''" }'

В качестве альтернативы можно выразить awk-код, не используя символ одинарной кавычки. Вы можете использовать обратную косую черту, за которой следуют три восьмеричных цифры, для представления любого символа в строковом литерале в awk. Для одиночной кавычки в системах на основе ASCII это \047.

awk '{ print "\047" $0 "\047" }'
13
18.03.2021, 23:27

Код awk просто должен быть

{ print "'" $0 "'" }

Вы можете поместить это в файл, так что вам не нужно ничего цитировать:

$ printf 'a\nb\n' | awk -f quote.awk 
'a'
'b'

Или используйте строку в двойных -кавычках и избегайте кавычек и знака доллара:

$ printf 'a\nb\n' | awk "{ print \"'\" \$0 \"'\" }"

Или в Bash/ksh/zsh используйте форму кавычек $'...', которая позволяет избежать одинарной кавычки внутри:

$ printf 'a\nb\n' | awk $'{ print "\'" $0 "\'" }'
4
18.03.2021, 23:27

Обратите внимание, что для этого вам не нужен awk.

Вместо этого можно использовать базовую утилиту paste:

 < input paste -d "'" /dev/null - /dev/null

Это было бы более эффективно и имело бы меньше ограничений, чем решения на основеawk-или sed-.

6
18.03.2021, 23:27

вы также можете использовать команду sed.

<infile sed -E "s/^|$/'/g"

или

<infile sed -E "s/.*/'&'/" 
1
18.03.2021, 23:27

Теги

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