替换 sed 或 awk 中的多行

替换 sed 或 awk 中的多行

我正在尝试使用 sed 或 awk 来替换 smb 文件中的 5 行,但我不知道如何处理换行符。

答案1

sed 在这方面相当糟糕,因为它一次只操作一行。我见过的唯一合适的技术是这个,它涉及将整个文件存储在 sed 的保持缓冲区中,然后一次性对其进行操作:

sed -n '1h;1!H;${g;s/search/replace/;p;}'

如果可以的话,使用 perl 来完成此操作要容易得多:

perl -0pe 's/search/replace/'

search可以包含\ns 来表示换行符

相关内容