2

我有以下文本文件

config 'toto'
        option 
        option 

config 'titi'
        list 
        list 

config 'tutu'
        list 
        list 

当我使用cat.

我尝试了以下命令,但它们不起作用

cat file | sed -e "s@$'\n'$'\n'@$'\n'@g"
cat file | sed -e "s@\n\n@\n@g"

预期的输出是这样的:

config 'toto'
        option 
        option 
config 'titi'
        list 
        list 
config 'tutu'
        list 
        list 
4

5 回答 5

3

使用sed

$ sed '/^$/d' foo.txt
config 'toto'
        option
        option
config 'titi'
        list
        list
config 'tutu'
        list
        list

如果您的空行包含空格,您可以使用

$ sed '/^\s*$/d' foo.txt

或者

$ sed '/^[[:space:]]*$/d' foo.txt

也将它们过滤掉。

使用awk

$ awk '!/^[[:space:]]*$/' foo.txt

使用grep

$ grep -v '^[[:space:]]*$' foo.txt
于 2014-03-14T09:47:15.710 回答
3

sed

sed '/^$/d' file

(或者)

sed '/^[ ]*$/d' file

tr

tr -s '\n' < file
于 2014-03-14T09:47:21.233 回答
1

小小的awk

awk 'NF' file

$ cat file
config 'toto'
        option 
        option 

config 'titi'
        list 
        list 

config 'tutu'
        list 
        list 

$ awk 'NF' file
config 'toto'
        option 
        option 
config 'titi'
        list 
        list 
config 'tutu'
        list 
        list 
于 2014-03-14T11:25:28.523 回答
0
egrep -v '^ *$' YourFile

应该比 sed 快

于 2014-03-14T10:08:03.983 回答
-1

您可以使用 Bashwhile read循环。

while IFS='' read line; do
    if [ -z "$line" ]; then
        continue
    else
        echo "$line"
    fi
done < file

在这里,循环将打印不是空字符串的每一行。

于 2014-03-14T09:57:40.537 回答