Описание тега haggling
Не могли бы вы отредактировать ваш вопрос и добавить выход `гора`, пожалуйста? Я подозреваю, что имелось в виду разубедить фанатиков, которые утверждают, что окна такое бедный человек в Linux. Они разные операционные системы с разными корнями - не следует считать "бедной" версии другой. Я немного смущен, потому что это кажется очень коротким. Каковы вы просмотра от. Где картинки в Mac? Вы хотите только эта функция локально? @0942v8653 ты сделал это! Огромное спасибо! Я не думал, что это возможно. Я просто удалил ком.яблоко.док.plist из /Пользователи/avtraino/библиотека/настройки/ и перезапустить. Я понятия не имею, в чем была проблема, но сейчас все хорошо! Спасибо всем. эти инструкции являются неполными, в лучшем случае - plist файлы появляются, чтобы быть от мобильных версий, есть и другие проблемы в процессе, в том числе Сьерра-позволяет редактировать файлы в /System папку/библиотеки/LaunchDaemon
Если мы можем предположить, что любая линия только 2 поля должны иметь пустую строку убрать, вы можете сделать следующее в Perl:
$ Перл -Ф"\|" -Лейн '$#Ф==1 ? е : файл для печати'.КШМ
001|Бейкер Лондон|3|4|7
002|Пенни LaneLiverpool|88|5|7
Важная оговорка: как отметил в комментариях Стефана Chazelas, это предполагает, что ваш ввод не содержит каких-либо %
персонажей, поскольку, если это произойдет, будут приняты как спецификатор формата для функции printf
. Это может привести к нежелательным последствиям, начиная от простого печатания ошибается на выходе к еде загружает оперативной памяти, если ваш вклад как-то глупо, как %02147483600f%02147483600f%02147483600f%02147483600f
.
Объяснение
-в
: что делаетПерл
действовать, какна awk
, разделение каждой входной линии на персонаже дана-Ф
(Итак,|
здесь, который должен быть экранированы В\|
С|
означает " или " в регулярных выражениях Perl) и сохранение результата в массив@Ф
.-л
: это удаляет конечные символы новой строки из каждой строки ввода и добавляет'н
т каждаяпечать
вызова.-нэ
: читать входной файл построчно и применить скрипт, приведенный к-е
в каждой строке.$#Ф==1 ? е : принт'
: на$#Ф
переменной является количество элементов в массиве@Ф
, так что число полей. Это, следовательно, означает, что если количество полей равно 1, тое
(которая будет печатать текущую строку без символа новой строки, поскольку существующий был удален-л
иЕ
не добавить). Если число полей не ровно 1,печать
линии (которых, из-за-л
будет добавить перевод строки).
То же самое может быть расширена:
$ на Perl -е 'а($строки=<значение stdin>){
гусеничка $линии;
@поля=сплит(/\|/,$строка);
если(скаляр(@поля) == 2){
печать "$строка";
}
еще{
печать "$строка\Н"
}
}' < файл.КШМ
001|Бейкер Лондон|3|4|7
002|Пенни LaneLiverpool|88|5|7
И даже более короткий вариант, предложенный @Сандип в комментариях:
гусеничка на Perl -е'\|' -Апэ 'ли $#Ф==1'