Text-Processing

在最後一行之前插入文本 N 行

  • May 16, 2018

我想在最後一行之前的兩行中插入一個新行。所以如果我的原始文件是:

1
2
3
4
5

結果應該是

1
2
3
New line
4
5

使用ed

$ printf '$-1i\nNew line\n.\n,p\n' | ed -s file
1
2
3
New line
4
5

ed編輯腳本:

$-1i
New line
.
,p

這首先移動到從末尾向上的一行 ( $-1) 並在該行上方插入 ( i) 新內容。插入的內容以單點結尾(允許為多行)。最後一個,p在終端上顯示完整的修改緩衝區。

您可以將其重定向到新文件,也可以使用將其寫回原始文件

printf '$-1i\nNew line\n.\nw\n' | ed -s file

,p更改為w)。

後者也是您類似地ex用於這項工作的方式:

printf '$-1i\nNew line\n.\nw\n' | ex -s file

ed並且ex是標準的面向行的編輯器(與全屏編輯器相反),應該隨您的系統一起提供。請注意,這-s對每個人都有不同的含義,但在執行此類批處理模式編輯任務時都適用。

  • ed. “殼牌和公用事業”。 基本規格。IEEE 1003.1:2017。公開組。
  • ex. “殼牌和公用事業”。 基本規格。IEEE 1003.1:2017。公開組。

進一步閱讀:

  • 戴爾·多爾蒂和蒂姆·奧萊利 (1987)。“高級編輯”。Unix 文本處理。海登圖書。

引用自:https://unix.stackexchange.com/questions/443850