FILE
:
hello
world
foo
bar
Как мне удалить в нем все пустые новые строки FILE
?
Вывод команды:
FILE
:
hello
world
foo
bar
FILE
:
hello
world
foo
bar
Как мне удалить в нем все пустые новые строки FILE
?
Вывод команды:
FILE
:
hello
world
foo
bar
Ответы:
grep . FILE
(И если вы действительно хотите сделать это в СЭД, то: sed -e /^$/d FILE
)
(И если вы действительно хотите сделать это в AWK, то: awk /./ FILE
)
sed -ne/./p
тоже работает, и awk /./
короче (действие, {print}
если не указано). @ ghostdog74: grep '[^[:space:]]'
тогда.
.
это регулярное выражение, которое соответствует любому символу, кроме новой строки.
grep . FILE
работает с данным примером, но не обязательно, когда файл может иметь байты, не являющиеся частью кодировки. Например, с GNU grep 2.20 printf "\x80\n" | grep .
ничего не выводит.
Попробуйте следующее:
grep -v -e '^$'
grep -v -e '^$'
всегда работает, чего нет grep .
. Например, с GNU grep 2.20 printf "\x80\n" | grep .
ничего не выводит, а printf "\x80\n" | grep -v '^$'
выводит непустую строку.
with awk, just check for number of fields. no need regex
$ more file
hello
world
foo
bar
$ awk 'NF' file
hello
world
foo
bar
awk1line.txt
- опять же, как и большинство
Вот решение, которое удаляет все строки, которые либо пустые, либо содержат только символы пробела:
grep -v '^[[:space:]]*$' foo.txt
Попробуй это: sed -i '/^[ \t]*$/d' file-name
Он удалит все пустые строки, у которых нет. пробелов (пробелов или табуляций), т.е. (0 или более) в файле.
Примечание: внутри квадратной скобки стоит пробел, за которым следует «\ t».
Модификатор -i
заставит записать обновленное содержимое обратно в файл. Без этого флага вы можете увидеть, что на экране были удалены пустые строки, но сам файл не будет затронут.
grep '^..' my_file
пример
THIS
IS
THE
FILE
EOF_MYFILE
он дает в качестве вывода только строки, содержащие не менее 2 символов.
THIS
IS
THE
FILE
EOF_MYFILE
Смотрите также результаты с grep '^' my_file
выходами
THIS
IS
THE
FILE
EOF_MYFILE
а также с grep '^.' my_file
выходами
THIS
IS
THE
FILE
EOF_MYFILE
Если удаление пустых строк означает строки, включающие любые пробелы, используйте:
grep '\S' FILE
Например:
$ printf "line1\n\nline2\n \nline3\n\t\nline4\n" > FILE
$ cat -v FILE
line1
line2
line3
line4
$ grep '\S' FILE
line1
line2
line3
line4
$ grep . FILE
line1
line2
line3
line4
Смотрите также:
Perl может быть излишним, но он работает так же хорошо.
Удаляет все пустые строки:
perl -ne 'print if /./' file
Удаляет все строки, которые полностью пустые или содержат только пробелы:
perl -ne 'print if ! /^\s*$/' file
Вариант, который редактирует оригинал и создает файл .bak:
perl -i.bak -ne 'print if ! /^\s*$/' file
Если вы хотите знать, сколько всего строк кода находится в вашем проекте Xcode, и вас не интересует перечисление количества для каждого быстрого файла, тогда это даст вам ответ. Он удаляет строки без кода и удаляет строки с префиксом комментария.//
Запустите его на корневом уровне вашего проекта Xcode.
find . \( -iname \*.swift \) -exec grep -v '^[[:space:]]*$' \+ | grep -v -e '//' | wc -l
Если в вашем коде есть блоки комментариев, начинающиеся /*
и заканчивающиеся */
такими, как:
/*
This is an comment block
*/
тогда они будут включены в подсчет. (Слишком сложно).
Самый простой ответ -----------------------------------------
[root@node1 ~]# cat /etc/sudoers | grep -v -e ^# -e ^$
Defaults !visiblepw
Defaults always_set_home
Defaults match_group_by_gid
Defaults always_query_group_plugin
Defaults env_reset
Defaults env_keep = "COLORS DISPLAY HOSTNAME HISTSIZE KDEDIR LS_COLORS"
Defaults env_keep += "MAIL PS1 PS2 QTDIR USERNAME LANG LC_ADDRESS LC_CTYPE"
Defaults env_keep += "LC_COLLATE LC_IDENTIFICATION LC_MEASUREMENT LC_MESSAGES"
Defaults env_keep += "LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER LC_TELEPHONE"
Defaults env_keep += "LC_TIME LC_ALL LANGUAGE LINGUAS _XKB_CHARSET XAUTHORITY"
Defaults secure_path = /sbin:/bin:/usr/sbin:/usr/bin
root ALL=(ALL) ALL
%wheel ALL=(ALL) ALL
[root@node1 ~]#