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 ~]#