Comm/Diff (или альтернатива ), учитывающая символы глобуса :, возможно ли это?

Я не знаю, как добиться этого с помощью xrandr, но если вы используете nvidia, это легко сделать с помощьюnvidia-settings:NVIDIA X Server Settings with viewport configured smaller than screenЧерная рамка будет отображаться в правой части окна просмотра. На самом деле я использую это для проекторов, которые могут не использовать всю область проецирования из-за препятствий.

3
17.07.2020, 19:08
1 ответ

Если вы хотите сообщить обо всех строках bar.txt, которые не соответствуют ни одному из шаблонов в foo.txt, в zsh, это может быть:

unique_lines=(${(fu)"$(<bar.txt)"})
unique_patterns=(${(fu)"$(<foo.txt)"})
pattern="(${(j[|])unique_patterns})"

print -rC1 -- ${unique_lines:#$~pattern}

Или все сразу:

print -rC1 -- ${${(fu)"$(<bar.txt)"}:#(${(j[|])~${(fu)"$(<foo.txt)"}})}
  • $(<file)— это ksh -, подобный оператору, который расширяется до содержимого $fileбез завершающих символов новой строки.
  • ${(flags)param}использует флаги расширения параметра , чтобы повлиять на расширение param.
  • fфлаг, разбиение на переводы строки (здесь расширяется до списка не -пустых строк ).
  • u(uniq ):удаляет дубликаты. Итак, ${(fu)"$(<foo.txt)"}расширяется до уникальных не -пустых строкfoo.txt
  • ${array:#pattern}расширяется до элементов $array, которые не соответствуют шаблону. Здесь шаблон строится как:
  • ${(j[|])unique_patterns}где элементы $unique_patternsсоединены с |. Таким образом, мы получаем шаблон (line1|line2|...).
  • ~в $~patternзаставляет подстановочные знаки рассматриваться как таковые при расширении переменной.

Обратите внимание, что синтаксис подстановочных знаков аналогичен zshподстановочным знакам. На это влияют несколько параметров оболочки, таких как extendedglob, kshglob, nocasematch...

.

В bashвы можете сделать что-то подобное с:

shopt -s extglob
pattern="@($(sort -u foo.txt | paste  -sd '|' -))"
sort -u bar.txt |
  while IFS= read -r line; do
    [[ $line = $pattern ]] || printf '%s\n' "$line"
  done

На этот раз используется синтаксис подстановочных знаков bash extglob, аналогичный синтаксису ksh88.

Обратите внимание, что порядок строк в bar.txtменяется.

2
18.03.2021, 23:19

Теги

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