Я мог исправить это, используя HEAD-0 или HEAD-1.
например. xsetwacom --set "Перо Wacom Intuos PT S 2" MapToOutput HEAD-1
Как упоминается в комментарий , простым и очевидным ответом будет grep '||'
, но при этом не будут обнаружены случаи, когда первый или последний столбец имеет значение NULL.
Итак, правильный ответ (все еще использующий grep
):
grep '^|\|||\||$' file.txt
Символ |
не является специальным для Grep, если он не экранирован обратной косой чертой или если - Указана опция E
. Тем не менее, это немного неясно, поэтому давайте посмотрим, как бы он выглядел, если бы разделителем в файле была запятая :
grep '^,\|,,\|,$' file.txt
Если вы хотите опустить строки, где только последний ] имеет значение NULL, но выведите строки, в которых любое другое поле имеет значение NULL, просто опустите последний регистр:
grep '^|\|||' file.txt
На самом деле, легче увидеть, что происходит, если вы поместите отдельные случаи в отдельные аргументы, например:
grep -e '^|' -e '||' -e '|$' file.txt
Используя Miller :
$ cat pipe.dat
apple|banana||pear||grapefruit
lemon|lime|damson|jackfruit
|tangerine|nectarine|plum
apricot|orange|pineapple|coconut|
$ cat has-blanks.mlr
@has_empty = false;
for (k,v in $*) {
if (v == "") {
@has_empty = true;
break;
}
}
filter @has_empty;
$ cat pipe.dat | mlr --nidx --fs pipe put -f has-blanks.mlr
apple|banana||pear||grapefruit
|tangerine|nectarine|plum
apricot|orange|pineapple|coconut|
Это найдет нулевые поля, включая первое и последнее поле.
awk -F\| '{for(i=1;i<=NF;i++) if($i=="") { print $0; next } }' file.csv > out.txt
Вы можете попробовать это с помощью awk. Он выведет номер строки в случае совпадения.
$ awk '/^\|/ || /\|\|/ || /\|$/{print $0}' input_test
apple|banana|pear||grapefruit
|tangerine|nectarine|plum
apricot|orange|pineapple|coconut|
Основываясь на ваших изменениях к первоначальному вопросу, я переработал команду awk.
Объяснение: Awk будет соответствовать одному из трех условий
Поскольку awk распознает | как оператор, когда мы пытаемся найти соответствие "|", мы должны использовать "\" перед ним.
Теперь эти 3 условия объединяются вместе с "||", что awk интерпретирует как "or". Когда одно из этих трех условий будет выполнено, будет напечатана вся строка.
Чтобы определить нулевой столбец (столбцы), можно использовать
awk -F"|" '!length($1) || !length($4) {print $0} ' input_test