Я сделал немного раскопок и нашел, что Ваш ноутбук имеет дефект от производителя (микросхема NVIDIA, конкретно), и единственное решение состоит в том, чтобы сделать "обратное течение", как объяснено здесь.
Вы можете купить подставку-кулер в настоящее время для создания продолжительности жизни ноутбука дольше, но не решите температурную проблему.
О неспособности выполнить pwmconfig, BIOS не включает (из документации HP) метода для ручного изменения скорости вентилятора, следовательно pwmconfig сбои, поскольку нет никакого модуля, который позволяет управление этим, оценивает.
Для других ноутбуков я рекомендую проверить Ваше руководство/спецификации и видеть, включают ли они поддержку этого модули. Рабочие датчики - обнаруживают, не собирается причинять боль, если Вы не уверены, или Ваша документация не включают информацию. Также помните, что иногда Linux не включает модули, даже если Ваша машина включает поддержку, таким образом, необходимо держать себя в курсе с последними выпусками ядер и молиться.
А путь с awk, который настраиваем для различных чисел полей.
Также пробел не имеет значения.
awk 'NF~/^(5|6)$/{x=0;for(i=1;i<=NF;i++)x+=($i~/^[0-9]+$/)}x==NF' file
Это проверяет, что количество полей равняется 5 или 6, хотя больше чисел полей могло быть добавлено, если ваши требования когда-нибудь изменяются.
Затем это устанавливает в противоречии с 0
Затем циклы, проверяющие, что каждое поле является числом и если это, добавляет 1 к счетчику
, Если счетчик равняется количеству полей, это печатает строку.
ввел
1 2 3 4 5 6
2 3 4 5 6
3 4 5 6
blah 1 2 3 4 5
4 3324 4 53 6
, производит
1 2 3 4 5 6
2 3 4 5 6
4 3324 4 53 6
grep -e '[0-9] {5}'
ищет цифры с не менее 5 цифр. То, что вам нужно, это 5 номеров с хотя бы одной цифрой:
grep -E '[0-9]+([^0-9]+[0-9]+){4}'
[0-9] +
- ряд, по меньшей мере, одной цифры [^ 0-9] + [0-9] +
- число, по меньшей мере, одной цифрой, предшествующему, по меньшей мере, один незначный символ. Затем мы повторим это 4 раза, чтобы получить 5 номеров, разделенных незначающими. [^ 0-9]
, чтобы вся линией соответствовала (с якорями, конечно).
1,2,3,4,6
квалификация?) Вы можете посмотреть на другие сепараторы. Например, правильная научная нотация реального числа будет выглядеть так: [+ -]? (([0-9] + (\. [0-9] +)?) | ([0-9]? \ , [0-9] +)) ([EE] [+ -] [0-9] +)?
Таким образом, разделители могут не включать .
, E E
и т. Д. Они могут быть только пробелами, как Mikeserv
Notes. Или они, возможно, запяты, если это запись CSV. Или в зависимости от локали запятая будет десятичный разделитель. Варьироваться [^ 0-9]
согласно вашим потребностям.
Я бы выбрал что-нибудь более мощное, чем grep
. Это можно сделать с помощью perl:
perl -ne 'print if s/\d+/$&/g == 5' your_file
Регекс-замена заменяет все группы одной или нескольких цифр (\d+
) на себя ($&
): это ничего не делает. Используется просто для побочного эффекта, так как оператор s///
возвращает количество раз, которое ему удалось заменить на свой регекс. Таким образом, строка выводится только в том случае, если s///
нашли 5 групп цифр.
Другой perl
:
$ perl -MList::Util=first -Tnle '
s/^\s+|\s+$//g;
@e = split /\s+/;
print if @e == 5 || @e == 6 and !first {/\D/} @e;
' file
10 2 12 1 13
Объяснение
s/^\s+|\s+$/g
обрезает линию.
@e = split /\s+/
split the line into array @e
.
Мы выведем строку, если:
@e
содержит 5 или 6 элементов. \D
совпадает с нецифровыми символами). awk '{l=$0; n = gsub(/[0-9]+/, "", l)}; n == 5 || n == 6'
(тот же принцип, что и в ответе Джозефа )
. Я знаю, что не решил, используя sed
или awk
или любую из команд shell
, однако tcl
все же получилось хорошо.
Я сохранил сценарий простым и удобным для пользователя. Такие элементы как 4a abc
и т.д. будут учтены
script.tcl file
#!/usr/bin/tclsh
if {$argv == ""} {
puts "please enter the arguement"
exit ;
}
set tar_fl [lindex $argv 0]
if {![file exists $tar_fl]} {
puts "$tar_fl doesnot exist"
exit ;
}
set flptr [open $tar_fl r]
while {[gets $flptr line] >=0 } {
if {[llength $line] !=5} {continue ;}
if {[llength $line ] == 5} {
if {[lsearch -regexp $line {[^0-9]}]> -1} {continue;}
puts $line
}
}
close $flptr
10 2 12 1 13
1 2 3 4 5