我想编写一个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)')"
答案 0 :(得分:0)
好吧,所以我找到了一个可解决此问题的正则表达式:'/^\s*$/d'
(\s
=匹配任何空白字符(换行符,空格,制表符); *
=字符可能重复任何时间或不存在; $
=找到的最后一个\ s字符的结尾)
因此,工作代码为:sed -i '/^\s*$/d' ListeTable.lst