Инструмент для выхода из всех кавычек в строке/файле

Похож это работает на zsh:

  • Гарантируйте это $ZDOTDIR= каталог, где .zshrc расположен. Например, export ZDOTDIR=$HOME
  • В .vimrc, set shell=zsh\ -i или set shellcmdflag+=i для того же эффекта.

-i то, потому что при запуске в интерактивном режиме, zshell загрузки $ZDOTDIR/.zshrc. Посмотрите man zsh и поиск $ZDOTDIR для деталей.

2
07.02.2015, 16:40
4 ответа

POSIXLY Вы можете безопасно избежать любую строку в одну контактную строку для rinterput в оболочку, как:

alias "string=$(cat file)"; alias string

псевдоним будет жестко цитировать свой вывод и представлять (как минимум) string = до головы строки. Bash (в разрыве со стандартом) также добавляет псевдоним псевдоним к началу вывода. Тем не менее, вы можете получить EVAL - дружелюбную версию любой строки, например:

string=$(alias "string=$(cat file)"; alias string)
string=${string#*=}

или, чтобы получить его в буфер обмена:

<infile sh -c 'alias "c=$(cat)" c' | sed 1s/..// | xsel -bi 
2
27.01.2020, 22:00

Bash:

> printf %q "this is \"weird\""
this\ is\ \"weird\"

> printf -v var %q "this is \"weird\""
> echo $var
this\ is\ \"weird\"
0
27.01.2020, 22:00

Если вы хотите избежать каждой двойной кавычки и обратной косички, вы можете использовать

perl -wpe 's/([\\"])/\\$1/g'

, вы также можете использовать это с помощью Xclip:

cat myfile | perl -wpe 's/([\\"])/\\$1/g' | xclip -selection clipboard
2
27.01.2020, 22:00

Причина отсутствия последовательности «urxvt», «URxvt» заключается в том, что XWindows находятся в иерархии. И почему-то на моем рабочем столе окна urxvt находятся не на первом уровне.

Итак, нужно пройти через целое дерево так:

from Xlib.display import Display

def printWindowHierrarchy(window, indent):
    children = window.query_tree().children
    for w in children:
        print(indent, w.get_wm_class())
        printWindowHierrarchy(w, indent+'-')

display = Display()
root = display.screen().root
printWindowHierrarchy(root, '-')

Одна строка (вероятно, довольно длинная) выходных данных сценария тогда:

--- ('urxvt', 'URxvt')
-121--56518-

Нет, -k1,2 говорит сортировать по части строки, которая начинается в начале первого поля и заканчивается в конце второго поля.

Для сортировки по первому полю, а затем по второму, это:

sort -k1,1 -k2,2
-121--82194-

Oracle, mysql и sqlite все имеют функцию quote . var thing = quote («так\» странно\« и вещи вещи») может работать.

Кажется, что код преобразован на один путь. Очень трудно повернуть вспять, если только одиночные и двойные цитаты ускользают от обратной косой черты, потому что мы не знаем, какую из них удалить.
Лучшим способом, который может безопасно выполнять двунаправленное преобразование как простых, так и двоичных данных, является кодирование base64.

echo \'\"\' \"\'\" \\
'"' "'" \
echo \'\"\' \"\'\" \\ | base64
JyInICInIiBcCg==
echo JyInICInIiBcCg== | base64 -d
'"' "'" \  

можно сжать для экономии места.

wc -c  /usr/bin/bashbug
6957
gzip < /usr/bin/bashbug | base64 |wc -c
4094
0
27.01.2020, 22:00

Теги

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