我有两个文件,都包含数万行。我目前正在从 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,[...]
但是,我现在想在第 1235 行附加字符串 ,Yes。所以在 file_two.txt 上我有
Line 1235> [...],Z1234562,[...],Yes
在 Glenn Jackman 对 this 另一个问题的回答的帮助下,我能够弄清楚如何使用 ed 编辑器添加文本之前和之后文件中的特定行。但是,我无法确定使用 ed 是否可以将文本添加到文件中行的末尾。读 documentation 我不确定是否有。到目前为止,基于 AIX site ,这就是我所拥有的:
(echo '15022a'; echo 'Text to add.'; echo '.'; echo 'w'; echo 'q') | ed -s filename.txt
这会在第 15,022 行之后附加字符串 Text to add.。我想知道是否存在与此附加等效的插入。
我不使用 sed 的原因是因为我在 AIX 系统上,而且我似乎无法了解 forum 的工作原理。但是,我不确定本论坛中的 sed 命令是否只能解决在行前或行后添加文本的问题,而不是在行尾添加文本的问题,我已经在工作了。
我的下一个方法是删除我想要追加的行末尾的返回字符,追加,然后重新添加返回字符,但我不想在用尽我的选择之前重新发明轮子。也许我错过了一些东西,因为我想尽快做到这一点,但任何帮助将不胜感激。我开始不喜欢这些 AIX 系统了。也许 awk 可以帮助我,但我对 awk 不太熟悉。
我使用 Perl 编写了一个小型二分搜索子例程,以便找到我想要附加到的行。我不确定 sed、ed、grep、awk 等是否使用二分搜索,但这就是为什么我不使用 ed 或 sed 的模式替换搜索。 我希望它尽可能快,所以我我愿意接受不同的方法。
最佳答案
这是我用来从脚本调用 ed
的一般方法:
(echo '/pattern/s/$/ new text/'
echo w ) | ed filename
这会在filename
上调用ed
,搜索包含pattern
的行,并附加“new text
”在那一行的末尾。调味。
您说您在使用 sed
时遇到了问题,但郑重声明,使用 sed
会出现同样的问题:
sed '/pattern/s/$/ new text/' filename > filename.modified
关于unix - 使用 ed 添加文本到文件中特定行的末尾,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40185601/