Нажатие $, затем Enter добавляет новую строку перед последним символом, а не после

awk 'FNR == 1 { FILENUM++ }
     SEEN[$0] == FILENUM - 1 { SEEN[$0] = FILENUM }
     END { for (s in SEEN) if (FILENUM == SEEN[s]) print s }' *.txt

Объяснение

При чтении первой строки каждого файла, инкремента FILENUM, так, чтобы при чтении n th файл, FILENUM n.

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

Когда там больше не вводится, чтобы считать, распечатать все строки, которые были замечены во всех файлах.

Внимание: Как с несколькими из решений, отправленных здесь, у этого также есть слабость. Согласно вопросу, если какой-либо из входных файлов пуст, там, как предполагается, не вывод вообще. Однако, так как awk является ориентированным на строку инструментом, он игнорирует пустые файлы. Таким образом, FNR == 1 { FILENUM++ } сбои для постепенного увеличения FILENUM для пустых файлов.

С GNU awk, возможно исправить эту ошибку с помощью ARGIND встроенная переменная.

gawk 'SEEN[$0] == ARGIND - 1 { SEEN[$0] = ARGIND }
      END { for (s in SEEN) if (ARGIND == SEEN[s]) print s }' *.txt
3
18.10.2015, 17:33
2 ответа

e используется для перехода в конец слова. Вы должны использовать $ , чтобы перейти в конец строки.

Вы можете вставить другую строку из текущей позиции, используя или (для открытия).

Вы также можете использовать A , чтобы добавить что-нибудь в конец строки из любого места в строке.

6
27.01.2020, 21:09
  1. Обычный способ добавить новую строку (или новые строки) под текущей строкой - это ввести o ( o ручка). Он немедленно создаст новую пустую строку , поэтому вам не нужно вводить Введите (до / пока вы хотите добавить две или более строк).
  2. Используете ли вы i ( i nsert)? Чтобы добавить текст после текущей позиции, используйте a ( a ppend). Или, чтобы добавить текст в конец текущей строки, используйте A , , что фактически является сокращением от $ a .
4
27.01.2020, 21:09

Теги

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