linux - 如何在第 n 行文件的中间插入文本

标签 linux unix awk sed

我想在文件的第 n 行之间插入一个管道符号。就像 diff 命令输出中的那个。

不想用VI编辑器。

例如,所需行是文件的第 2 行:

cat filename

Hi            Hi
Hello         Hello
This          This
is            Is
it            it

期望的输出:

猫文件名

Hi            Hi
Hello    |     Hello
This          This
is            Is
it            it

最佳答案

为了您自己的理智,请使用 awk:

$ awk 'NR==2{mid=length($0)/2; $0=substr($0,1,mid) "|" substr($0,mid+1)} 1' file
Hi            Hi
Hello    |     Hello
This          This
is            Is
it            it

要修改原始文件,您可以添加 > tmp && mv tmp file 或使用 -i inplace 如果您有 GNU awk。

关于linux - 如何在第 n 行文件的中间插入文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27923948/

相关文章:

linux - 批量删除文件

linux - 每秒通过 linux 将文件从 FTP 移动到本地

regex - 外壳脚本 : search and replace over multiple lines

c - 系统函数的返回值

c - 如何在C中运行shell命令

bash - 如何计算bash中单词后的所有数字

linux - 如何将 .bin 文件的内容提取到 linux 中的任何文件夹?

c - Makefile .o 文件规则问题

linux - 如何在 Linux 上查看和编辑临时端口范围?

shell - 在 Awk 中打印除最后一行之外的逗号