我需要帮助使用 Sed 向文件添加标题

Posted

技术标签:

【中文标题】我需要帮助使用 Sed 向文件添加标题【英文标题】:I need assistance adding a header to a file with Sed 【发布时间】:2021-12-24 08:26:27 【问题描述】:

我正在寻找一个 sed 唯一的命令来在文件开头添加一个新行,其中包含标题信息 - 排名、标题、系统、年份、制造商、销售。我知道我需要使用 \t 特殊字符来插入一个或多个选项卡。我尝试了一些,但似乎无法使列正确排列。

以下是我想要完成的。

等级名称系统年份制造商销售额
1 Wii 运动 Wii 2006 任天堂 41.36
2 超级马里奥兄弟 NES 1985 任天堂 29.08

我已经尝试了这个命令的各种修改:

sed -i '1iRank\tTitle\tSystem\tYear\tManufacturer\tSales' myfile

没有运气。

【问题讨论】:

Please don't post pictures of text。相反,将文本本身,edit 复制到您的帖子中,并使用格式化工具,如 code formatting。 欢迎来到 Stack Overflow!请拨打tour。您已经尝试过什么?请包括您的最佳尝试。有关更多提示,请参阅How to Ask。 【参考方案1】:

插入标题行:

sed -i '1iRank\tTitle\tSystem\tYear\tManufacturer\tSales' my-file

1 是地址(本例中为行号)。 i 是插入(行前)。 a 可用于追加(行后)。 -i 表示在 GNU sed (Ubuntu) 上就地编辑。

如果你想整齐地排列所有内容,你可以用单个选项卡替换每列之间的变量空格,然后使用column -t 添加标题并打印表格:

sed -E 's/ 2,/\t/g' my-file |
column -ts $'\t' -N \
Rank,Title,System,Year,Manufacturer,Sales

只有当您的所有字段至少由两个空格分隔时,这才能正常工作。

【讨论】:

这是我尝试过的命令之一,但标题信息仍然没有对齐。这就是我的问题所在。我需要排名在第一列的正上方,标题与第二列对齐,系统与第三列对齐,依此类推。 我认为可能是这种情况,但不清楚,因为您提到了标签。我将使用一些选项来更新答案,以便整齐地排列。

以上是关于我需要帮助使用 Sed 向文件添加标题的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 sed 在 shell 脚本中添加单引号

使用sed向hadoop-env,sh文件添加JAVA_HOME环境变量的问题

使用 NodeJS 向 JSON 文件键添加新属性

linux shell命令向文件内特定的行插入数据,如注释等

如何使用 sed 向每个 XML 节点添加命名空间

将 SED 与新行一起使用