grep . FILE
(如果你真的想用sed来做,那么: sed -e /^$/d FILE )
sed -e /^$/d FILE
(如果你真的想用awk来做,那么: awk /./ FILE )
awk /./ FILE
sed -ne/./p
awk /./
{print}
grep '[^[:space:]]'
.
printf "\x80\n" | grep .
Try the following:
grep -v -e '^$'
ghostdog74 :
这与grep .FILE的效果相同,因为空格是一个空行,会被抓取。
Mr.Ree :
"grep "寻找任何与该模式相匹配的行。 ". "匹配任何字符。 "grep .FILE "匹配任何至少有一个字符的行。 而 "grep -v "则排除了符合模式的行。 OP说 "删除所有空的新行"。 如果你想排除只有空格的行,"grep -v '^ $'". The " "将匹配前面模式中的零个或多个,在本例中是空格。 尽管你可能更喜欢匹配并排除其他空白字符(制表符、换行符等)。
Ben K :
这种方法使我能够更容易地组合多个排除法,而不仅仅是 "grep .FILE"。例如,我在看一个配置文件,想排除所有评论行和所有空行。所以我使用 "grep -v -e '#' -e '^$' squid.conf"。这很有效。
Édouard Lopez :
这个比'grep .FILE'。这是由于验证重组词'.'的任务更加复杂,而不是在^$不匹配时就排除。
vinc17 :
grep -v -e '^$' 总是有效,而 grep . 则不然。例如,在GNU grep 2.20中, printf "\x80\n" | grep . 没有输出,而 printf "\x80\n" | grep -v '^$' 输出非空行。
grep .
printf "\x80\n" | grep -v '^$'
ghostdog74 发布于 2020-08-22
0 人赞同
with awk, just check for number of fields. no need regex $ more file hello world $ awk 'NF' file hello world
ephemient :
不需要引号。 这个技巧可以在 awk1line.txt 中找到。-- 然后,大多数awk技巧也是如此:)
awk1line.txt
因为你是在shell下运行的,所以加引号是我的好习惯。对于复合awk语句,你仍然要加引号。
wisbucky :
解释了这一工作方式。 stackoverflow.com/questions/23544804/...
Marco Coutinho 发布于 2020-08-22
这里有一个解决方案,可以删除所有空白或只包含空格字符的行。 grep -v '^[[:space:]]*$' foo.txt
这里有一个解决方案,可以删除所有空白或只包含空格字符的行。
grep -v '^[[:space:]]*$' foo.txt
kenorb 发布于 2020-08-22
如果删除空行是指包括任何空格的行,则使用。 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 How to remove empty/blank lines (including spaces) in a file in Unix? How to remove blank lines from a file in shell? With sed: Delete empty lines using sed With awk: Remove blank lines using awk
如果删除空行是指包括任何空格的行,则使用。
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 How to remove empty/blank lines (including spaces) in a file in Unix? How to remove blank lines from a file in shell? With sed: Delete empty lines using sed With awk: Remove blank lines using awk
$ 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 How to remove empty/blank lines (including spaces) in a file in Unix? How to remove blank lines from a file in shell? With sed: Delete empty lines using sed With awk: Remove blank lines using awk
sed
awk
Deepak Shinde 发布于 2020-08-22
最简单的答案 ----------------------------------------- [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 ~]#
最简单的答案 -----------------------------------------
[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 ~]#
Prabhat Kumar Singh 发布于 2020-08-22
Try this: sed -i '/^[ \t]*$/d' file-name 它将删除文件中任何数量的空白行(空格或制表符),即(0或以上)。 注意:方括号内有一个 "空格",后面是"/t"。 修改器 -i 将强制把更新的内容写回文件中。如果没有这个标志,你可以看到屏幕上的空行被删除,但实际的文件不会受到影响。
Try this: sed -i '/^[ \t]*$/d' file-name
sed -i '/^[ \t]*$/d' file-name
它将删除文件中任何数量的空白行(空格或制表符),即(0或以上)。
注意:方括号内有一个 "空格",后面是"/t"。
修改器 -i 将强制把更新的内容写回文件中。如果没有这个标志,你可以看到屏幕上的空行被删除,但实际的文件不会受到影响。
-i
clblue2000 发布于 2020-08-22
grep '^..' my_file EOF_MYFILE 它只输出至少有两个字符的行。 EOF_MYFILE 也请看有 grep '^' my_file 输出的结果。 EOF_MYFILE 并有 grep '^.' my_file 输出 EOF_MYFILE
grep '^..' my_file
它只输出至少有两个字符的行。
也请看有 grep '^' my_file 输出的结果。
grep '^' my_file
并有 grep '^.' my_file 输出
grep '^.' my_file
Try ex -道。 ex -s +'v/\S/d' -cwq test.txt 对于多个文件(就地编辑)。 ex -s +'bufdo!v/\S/d' -cxa *.txt 无需修改文件(只需在标准输出上打印)。 cat test.txt | ex -s +'v/\S/d' +%p +q! /dev/stdin
Try ex -道。
ex -s +'v/\S/d' -cwq test.txt 对于多个文件(就地编辑)。 ex -s +'bufdo!v/\S/d' -cxa *.txt 无需修改文件(只需在标准输出上打印)。 cat test.txt | ex -s +'v/\S/d' +%p +q! /dev/stdin
对于多个文件(就地编辑)。
ex -s +'bufdo!v/\S/d' -cxa *.txt 无需修改文件(只需在标准输出上打印)。 cat test.txt | ex -s +'v/\S/d' +%p +q! /dev/stdin
无需修改文件(只需在标准输出上打印)。
cat test.txt | ex -s +'v/\S/d' +%p +q! /dev/stdin
Chris Koknat 发布于 2020-08-22
Perl可能是矫枉过正,但它也同样有效。 删除所有完全空白的行。 perl -ne 'print if /./' file 删除所有完全空白的行,或只包含空白的行。 perl -ne 'print if ! /^\s*$/' file 变化,它编辑了原件并制作了一个.bak文件。 perl -i.bak -ne 'print if ! /^\s*$/' file
Perl可能是矫枉过正,但它也同样有效。
删除所有完全空白的行。
perl -ne 'print if /./' file 删除所有完全空白的行,或只包含空白的行。 perl -ne 'print if ! /^\s*$/' file 变化,它编辑了原件并制作了一个.bak文件。 perl -i.bak -ne 'print if ! /^\s*$/' file
删除所有完全空白的行,或只包含空白的行。
perl -ne 'print if ! /^\s*$/' file 变化,它编辑了原件并制作了一个.bak文件。 perl -i.bak -ne 'print if ! /^\s*$/' file
变化,它编辑了原件并制作了一个.bak文件。
perl -i.bak -ne 'print if ! /^\s*$/' file
Chrispy 发布于 2020-08-22
如果你想知道你的Xcode项目中的总代码行数,而且你对列出每个swift文件的数量不感兴趣,那么这个会给你答案。 它删除了完全没有代码的行,并删除了以注释 // 为前缀的行。 在你的Xcode项目的根层运行它。 find . \( -iname \*.swift \) -exec grep -v '^[[:space:]]*$' \+ | grep -v -e '//' | wc -l 如果你的代码中有以/*开头,以*/结尾的注释块,如:。
如果你想知道你的Xcode项目中的总代码行数,而且你对列出每个swift文件的数量不感兴趣,那么这个会给你答案。 它删除了完全没有代码的行,并删除了以注释 // 为前缀的行。
//
在你的Xcode项目的根层运行它。
find . \( -iname \*.swift \) -exec grep -v '^[[:space:]]*$' \+ | grep -v -e '//' | wc -l 如果你的代码中有以/*开头,以*/结尾的注释块,如:。
如果你的代码中有以/*开头,以*/结尾的注释块,如:。
/*
*/