有人可以建议我如何编码可用于更新文本文件的sed脚本,如下所示:
每次在文件中遇到包含字符串“ Header_one”的行: -删除紧跟在“ Header_one”行之后的行,直到遇到下一个空白行。 -但不要删除“ Header_one”行本身
例如,一个包含以下内容的文件:
Header_one
dkrjng
djsje
Header_two
cklrgjsj
djrhg
Header_one
drgbyj
efgjjm
cddess
Header_three
sdfvgg
ddddfy
将更改为:
Header_one
Header_two
cklrgjsj
djrhg
Header_one
Header_three
sdfvgg
ddddfy
对于任何指导或解决方案,我将不胜感激。 谢谢, 詹姆斯。
答案 0 :(得分:1)
尝试下面的代码
-e
这里的想法是替换2行之间的内容,并用标题(即Header_one)替换。代码的第二-e
部分确实删除了Header_one和空格之间的数据;而第一个Header_one
部分将其替换为新的标头private void dataGridView_CellValueChanged(object sender, DataGridViewCellEventArgs e) {
if (dataGridView.Columns[e.ColumnIndex].Name == "MyCheckBoxCellName" && dataGridView.Columns[e.ColumnIndex].Value) {
// Disable your Timer
refresher.Enabled = false;
}
}
。
InputFile和OutputFiles是简单的重定向。
您还可以查看:https://askubuntu.com/questions/637003/delete-lines-between-2-strings
希望这会有所帮助:)
答案 1 :(得分:0)
sed
是一种流编辑器,尽管sed的一个流行版本提供了一个似乎可以使其编辑文件的选项,但我强烈建议不要使用它。也就是说,您可以使用以下命令产生所需的输出:
sed -e '/Header_one/i\
Header_one\
\
' -e '/Header_one/,/^$/d' input
请注意,如果您不需要保留空白行,它会更干净:
sed -e '/Header_one/p' -e '/Header_one/,/^$/d' input
也:awk '/Header_one/{printf "Header_one\n\n"; next } 1' RS= ORS='\n\n' input
答案 2 :(得分:0)
使用Perl
perl -ne ' { print "Header_one\n" if /Header_one/ ; print if not /Header_one/../^$/ } '