我有两个文件,都包含数万行。我目前正在从file_one.txt获取一个字符串( Z1234562)并尝试查看它是否在file_two.txt上。如果在file_two.txt上找到它,我将返回匹配所在的行号——在本例中为第 1235 行。我已经有这个工作了。
file_one.txt
Line 1> [...]_Z1234562
file_two.txt
Line 1234> [...],Z1234561,[...]
Line 1235> [...],Z1234562,[...]
Line 1236> [...],Z1234563,[...]
但是,我现在想将字符串,Yes附加到第 1235 行。所以在 file_two.txt 我有
Line 1235> [...],Z1234562,[...],Yes
在 Glenn Jackman 对另一个问题的回答的帮助下,我能够弄清楚如何在文件中的特定行之前和之后使用 ed 编辑器添加文本。但是,我无法弄清楚是否可以使用 ed 将文本添加到文件中的行尾。阅读文档我不确定是否存在。到目前为止,基于这个 AIX站点,这就是我所拥有的:
(echo '15022a'; echo 'Text to add.'; echo '.'; echo 'w'; echo 'q') | ed -s filename.txt
这会附加要添加的字符串文本。在第 15,022 行之后。我想知道是否有与此附加等效的插入。
我不使用 sed 的原因是因为我在 AIX 系统上,我似乎无法了解这个论坛的工作。但是,我不确定这个论坛中的 sed 命令是否只解决在一行之前或之后添加文本而不是在行尾添加文本,我已经在使用它了。
我的下一个方法是删除我想要追加到的行末尾的返回字符,追加,然后重新添加返回字符,但我不想在用尽我的选择之前重新发明轮子。也许我错过了一些东西,因为我想尽快做到这一点,但任何帮助将不胜感激。我开始不喜欢这些 AIX 系统了。也许 awk 可以帮助我,但我对 awk 不太熟悉。
我使用 Perl 编写了一个小的二进制搜索子例程,以便找到我想要附加到的行。我不确定 sed、ed、grep、awk 等是否使用二进制搜索,但这就是为什么我不使用 ed 或 sed 的模式替换搜索。我希望它尽可能快,所以我对不同的方法持开放态度。