Bash:用字符串替换空行

时间:2013-05-12 15:03:48

标签: bash

如何替换文本文件中的空行,假设该文件为:

first

third

使用Bash的一些字符串(例如“第二个”)? 我想做某事像这样:

first
second
third

3 个答案:

答案 0 :(得分:7)

您可以使用sed

sed -i -e 's/^$/second/' file

-i选项切换就地替换。

答案 1 :(得分:6)

您还可以使用default value作为未设置或空的变量:

cat file.txt | while read line
do
   echo "${line:-second}"  # empty lines are default to 'second'
done > file.out

答案 2 :(得分:3)

您可以使用[ -z "$line" ]来测试line是否为空,并随身携带。

cat file.txt | while read line
do
   if [ -z "$line" ]
   then
     //$line is empty
   fi
done

编辑 - 如果你想用“秒”替换空行 - 那么你最终会得到file.out,这是用second取代空行的新文件

touch file.out
cat file.txt | while read line
do
       if [ -z "$line" ]
       then
         echo "second" >> file.out
       else
          echo $line >> file.out
       fi
 done