awk - сопоставление пустых строк

Следующие работы:

Сначала мы обновляем ядро ​​Linux до 4.4.

Загрузите http://kernel.ubuntu.com/~kernel-ppa/mainline/v4. 4-rc7-wily / linux-image-4.4.0-040400rc7-generic_4.4.0-040400rc7.201512272230_amd64.deb, а затем:

$ sudo dpkg -i linux-image-4.4.0-040400rc7-generic_4.4.0-040400rc7.201512272230_amd64.deb

$ sudo apt-get update
$ sudo apt-get upgrade

Затем установите некоторые обновленные средства прошивки:

[ f2]

Затем загрузите и установите следующую прошивку: http://kernel.ubuntu.com/~kernel-ppa/mainline/v4.4-rc7-wily/linux-image-4.4.0- 040400rc7-generic_4.4.0-040400rc7.201512272230_amd64.deb и

$ sudo dpkg -i linux-firmware_1.154_all.deb

Перезагрузите компьютер, и вы должны иметь Wi-Fi!

0
задан 27 May 2017 в 21:42

4 ответа

Этот код просто подсчитывает пустые строки в файле и отлично выполняет свою работу без каких-либо проблем.

Для этой цели вы можете использовать следующую команду:

mawk '/^$/ { print x += 1 }' yourfile.txt

Или это:

awk '/^$/ { print x += 1 }' yourfile.txt

Выход для этой команды выглядит следующим образом:

1 2 3 4

Но если вы хотите увидеть только 4, вы можете использовать эту команду: [ ! d4] awk '!NF {s+=1} END {print s}' yourfile.txt

Или этот:

mawk '!NF {s+=1} END {print s}' yourfile.txt

Эти команды выводят только 4.

Сноски: я используя Ubuntu 17.04, и я не сталкивался с какими-либо проблемами:

lsb_release -ds Ubuntu 17.04
2
ответ дан 18 July 2018 в 12:38

/^$/ - это условие, означающее пустые строки, как они работают? ^ означает начало и $ означает конец. поэтому с ^$ мы ищем строки, которые начинались и заканчивались ничем (пустые строки).

После этого { print x += 1 } будет запущен на всех этих пустых строках.

x - переменная, каждый раз мы добавляем 1 к ее значению, затем печатаем ее. это { print ++x } (сначала добавьте 1 в x, затем распечатайте x).

, поэтому ваш код подсчитывает и печатает пустые строки:

1 2 3 ...

Если ваши пустые строки содержат пробел вы должны использовать что-то вроде:

awk '/^\s*$/ { print "Blank " }' file
2
ответ дан 18 July 2018 в 12:38

Этот код просто подсчитывает пустые строки в файле и отлично выполняет свою работу без каких-либо проблем.

Для этой цели вы можете использовать следующую команду:

mawk '/^$/ { print x += 1 }' yourfile.txt

Или это:

awk '/^$/ { print x += 1 }' yourfile.txt

Выход для этой команды выглядит следующим образом:

1 2 3 4

Но если вы хотите увидеть только 4, вы можете использовать эту команду: [ ! d4] awk '!NF {s+=1} END {print s}' yourfile.txt

Или этот:

mawk '!NF {s+=1} END {print s}' yourfile.txt

Эти команды выводят только 4.

Сноски: я используя Ubuntu 17.04, и я не сталкивался с какими-либо проблемами:

lsb_release -ds Ubuntu 17.04
2
ответ дан 24 July 2018 в 20:00

/^$/ - это условие, означающее пустые строки, как они работают? ^ означает начало и $ означает конец. поэтому с ^$ мы ищем строки, которые начинались и заканчивались ничем (пустые строки).

После этого { print x += 1 } будет запущен на всех этих пустых строках.

x - переменная, каждый раз мы добавляем 1 к ее значению, затем печатаем ее. это { print ++x } (сначала добавьте 1 в x, затем распечатайте x).

, поэтому ваш код подсчитывает и печатает пустые строки:

1 2 3 ...

Если ваши пустые строки содержат пробел вы должны использовать что-то вроде:

awk '/^\s*$/ { print "Blank " }' file
2
ответ дан 24 July 2018 в 20:00
  • 1
    Я отредактировал мой вопрос. пожалуйста, проверьте. – nariknahom 27 May 2017 в 21:35
  • 2
    Можете ли вы дать мне свой реальный файл? потому что редактирование работает для меня. – Ravexina 27 May 2017 в 21:38
  • 3
    @nariknahom также посмотреть мое обновление. – Ravexina 27 May 2017 в 21:40
  • 4
    оказалось, что файл имеет терминаторы линии CRLF. После применения dos2unix это работает. – nariknahom 27 May 2017 в 21:43

Другие вопросы по тегам:

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