我有以下文本文件
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
答案 0 :(得分: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
答案 1 :(得分:3)
使用sed
:
sed '/^$/d' file
<强>(OR)强>
sed '/^[ ]*$/d' file
使用tr
:
tr -s '\n' < file
答案 2 :(得分: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
答案 3 :(得分:0)
egrep -v '^ *$' YourFile
应该比sed快
答案 4 :(得分:-1)
您可以使用Bash while read
循环。
while IFS='' read line; do
if [ -z "$line" ]; then
continue
else
echo "$line"
fi
done < file
这里,循环将打印不是空字符串的每一行。