Скопируйте только Определенный текст файла другому

Похож на эту кавычку, объясняет она:

Предупреждение. setxkbmap не только изменяет алфавитно-цифровые ключи к значениям, данным в карте; это также сбрасывает все другие ключи к значению по умолчанию запуска. При присвоении значений ключам Windows или мультимедийным ключам эти настройки могут быть потеряны.

Начиная с визуального значения по умолчанию и система (или "фактический") состояние клавиши Num Lock, по-видимому, выключено, я предполагаю вот почему, что это происходит вообще. Почему состояние системы является нетронутым и почему это только происходит, когда нажатие определенных клавиш является все еще тайной.

6
28.05.2014, 02:56
10 ответов
[1183572]Простой подход с [1183880]awk[1183881]:

-F\"[1183959] меняет разделитель полей со стандартного (пробел) на кавычки (escaped with [1183960]\[1183961])

/WOF/[1183963] ограничивает возвращаемые результаты каждой записи (строки файла) теми, которые совпадают с шаблоном: [1183964]WOF

$4[1183967] является четвертым полем для каждой из этих совпадающих записей, путь.

7
27.01.2020, 20:20
[1183602] Другой подход с grep and cut:

Это будет смазывать все линии, содержащие [1183914] kind="con"[1183915] и печатать пути, установив разделитель [1183916] cut[1183917] на [1183918]"[1183919].[1183605].

4
27.01.2020, 20:20

OUTPUT[12140] Это должно получить только [1183920]WO[1183921]... вещи, я думаю. Он также полностью портативный. [1183609]

4
27.01.2020, 20:20
[1183596] Другое решение, если ваша версия [1183912]grep[1183913] поддерживает PCRE-стиль lookarounds

3
27.01.2020, 20:20
[1183576] С [1183888]sed

2
27.01.2020, 20:20
[1184148] Так как никто еще не опубликовал ни одного, вот несколько решений на Perl:
  • Объяснение
  • Пояснение [1184487]-ne[1184488] означает "Читайте входной файл строка за строкой и применяйте скрипт, переданный [1184489]-e[1184490]". Оператор [1184491]s/foo/bar/[1184492] является оператором замены, он заменит [1184493]foo[1184494] на [1184495]bar[1184496]. В этом случае, замена будет той же, что и в скобках, это [1184497]$1[1184498]. Регекс означает "соответствовать всему до [1184499]con[1184500], затем самая длинная строка до [1184501]=[1184502], а затем захватить все между кавычками". Вывод [1184503] && выведет [1184504] измененную строку только в том случае, если замена прошла успешно.
  • Объяснение
  • Это немного более идиоматическое. Он выведет результат применения той же замены, которая использовалась выше, к каждой строке входного файла ([1184505]<>[1184506]). Просто другой способ записи одного и того же базового подхода.
  • Объяснение

    [1184507]-a[1184508] заставляет [1184509]perl[1184510] вести себя как [1184511]awk[1184512], он автоматически разделяет входную строку на поля (сохраненные в виде массива [1184513]@F[1184514]) на символ(ы), переданный(ые) параметром [1184515]-F[1184516]. Так как я говорю ему разбивать на [1184517]=[1184518] или [1184519]"[1184520], то 5-ое поле будет тем, что мы ищем, и оно будет распечатано только в том случае, если 2-ое поле будет соответствовать [1184521]con[1184522]. В поле [1184523]-l[1184524] к каждому вызову [1184525] печати [1184526] добавляется новая строка (и другие вещи, которые не относятся к делу).

    tell application "iTunes"
        reopen
        activate
    end tell
    

    И вот ещё один [1184527] grep[1184528]. Это выведет все совпадения букв/буквы [1184529][1184530], это корректно работает на вашем примере, но может и не работать на более сложном:

    и чистом shell'е (bash/zsh/ksh):

    Explanation

    The [1184531] while read; do ... ; done < file[1184532] loops through each line of the file (сделать <файл[1184532] loops through each line of the file (сделать <файл[1184532]] loops through each line of the file (сделать <файл[1184532]]). Установка [1184533]IFS[1184534] на [1184535] =[1184536] разбивает каждую строку на [1184537] =[1184538] и [1184539] при считывании b c[1184540] сохраняет каждое поле в переменных [1184541]$a[1184542] через [1184543]$c[1184544]. Затем, если [1184545]$b[1184546] совпадает с [1184547]con[1184548], последние три символа удаляются из [1184549]$c[1184550] и результат сохраняется как [1184551]$a[1184552], а затем распечатывается с удалением первого символа (цитаты). См. [1184553] здесь[1184554] для получения дополнительной информации об опциях манипулирования строками бэша.[1184171].

    2
    27.01.2020, 20:20
    [1184047] Если формат файла действительно зафиксирован, то подход ниже [1184421] не столь эффективен, как многие другие ответы, которые вы уже получили.

    Таким образом, это в случае, если формат файла изменяется или на него нельзя положиться (или оказывается, что на него нельзя положиться после извлечения "грубой силы" и придумывания "путей", таких как [1184423]kind=[1184424]). К сожалению, мой опыт показывает, что "постоянные и гарантированные" форматы просто не являются таковыми. Или не надолго.

    Сначала вы конвертируете все теги в новые строки, так что вам не нужно беспокоиться о нескольких тегах в одной строке или расположении текста. Затем вы выбираете строки, содержащие одно слово "путь", затем пробел(и) и знак равенства

    из этих строк, и извлекаете компонент "путь"; Таким образом, Вам не нужно беспокоиться о том, что случится, если некоторые теги будут иметь атрибуты в немного другом формате

    $ ulimit -n
    256
    $ ulimit -Hn  # There's no initial hard limit
    unlimited
    $ ulimit -n 512  # This sets both the hard and soft limits
    $ ulimit -n
    512
    $ ulimit -Hn
    512
    $ ulimit -n 1024  # Once set, the hard limit cannot be increased
    -bash: ulimit: open files: cannot modify limit: Operation not permitted
    

    и, наконец, возможно, Вы захотите получить каждый путь только один раз

    обернув его в одну строку,

    2
    27.01.2020, 20:20
    [1184246] Можно было сделать так:

    1
    27.01.2020, 20:20
    [1184248] А вот с помощью обратной ссылки GNU sed,

    Пример:

    1
    27.01.2020, 20:20

    Теги

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