直接在文件中删除以CR开头的行

时间:2018-10-05 09:01:36

标签: shell ksh carriage-return

我想编写一个ksh脚本,以回车开头删除文件的所有行。我想在同一脚本中指定我要重用修改后的文件,所以我需要直接在文件中进行修改。

例如,这是我在Notepad ++中的文件(回车符显示为CRLF作为Windows格式文件):

CE1;CPr1;CRLF
CE2;CPr2;CRLF
CRLF
CE3;CPr3;CRLF
CRLF
CRLF

我想获得:

CE1;CPr1;CRLF
CE2;CPr2;CRLF
CE3;CPr3;CRLF

到目前为止我写的脚本是:

sed -i '/^\n/d' ListeTable.lst

我也尝试使用\r\R,但没有任何效果。

我指定了以下脚本,该脚本可重用看起来像是(但还有更多)的修改后的文件:

echo -n "(CE = '$(tail -n 1 ListeTable.lst | cut -d$';' -f1)'and CPr = '$(tail -n 1 ListeTable.lst | cut -d$';' -f2)')"

1 个答案:

答案 0 :(得分:0)

好吧,所以我找到了一个可解决此问题的正则表达式:'/^\s*$/d'\s =匹配任何空白字符(换行符,空格,制表符); * =字符可能重复任何时间或不存在; $ =找到的最后一个\ s字符的结尾)

因此,工作代码为:sed -i '/^\s*$/d' ListeTable.lst