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