【发布时间】:2014-02-09 00:39:29
【问题描述】:
我正在尝试按照标题所述进行操作:将 B.txt 中的所有文本添加到 A.txt 中的某个特定位置/部分。 我尝试使用 cat 和 sed 来完成此任务,但我对这些工具还是新手,不知道是否可以仅使用这些工具来实现我的目标。
这是我有一个更直观的命令行想法:
cat A.txt | sed "s/some_part_in_A/some_part_in_A+contents_of_B.txt/" > C.txt
或者没有猫...
sed "s/some_part_in_A/some_part_in_A+contents_of_B.txt/" A.txt > C.txt
或者完全不同的东西......
连接 A 和 B 以获得 C.txt,然后以某种方式将 C 的 B 部分(位于底部)“移动”到 A 的某个部分(C 的)。希望这听起来不会太令人困惑,哈哈
我错过了什么?我需要使用一些额外的工具吗?变量呢?以某种方式将 B.txt 的内容弹出到一个变量中,然后在 sed 中使用该变量? 对不起,我有点像菜鸟,我只是想用一些常识来解决这个问题。一些指导会有所帮助。提前致谢!
编辑: 解决方案
仅匹配 ONE LINE,然后从文件中插入文本:
sed '/some_part_in_A/rB.txt' A.txt > C.txt
感谢测试版!
匹配两行(或更多),然后从文件中插入文本:
sed "/line_one/N;/line_one\n.line_two/rB.txt" A.txt > C.txt
注意,您首先声明 line_one 然后 N 然后 line_one 再接着 \n (和一个 . 或 wutever 是捕获 \n 和 line_two 之间的任何内容所必需的,在我的情况下是一个 TAB 字符)然后 line_two 最后 r 到“ read" 从而将 B.txt 的内容插入 A.txt,但将结果输出到 C.txt
【问题讨论】:
-
你能给我们举一个
A.txt和B.txt的例子吗? -
它实际上是个人的,但我不明白它有什么关系?它可以是任何东西。我在这里寻找关于如何将 txt 从一个文件“插入”到另一个文件的技术。我对正则表达式部分没有问题。我已经设置了我的正则表达式模式来定位 A.txt 中我想要放置 B 的内容的位置,所以这不是问题。问题在于将 B 插入 A。仅此而已。 :)
-
我不知道您是否要将 B 中的行插入到 A 中,或者这是否可能涉及 行内 的更改。正则表达式
/some_part_in_A/到底是什么样的?你在寻找一个特定的行,一个行中的一个词,一个以某事或其他开头的行,什么?即使是虚构的例子也会有所帮助。 -
当然,/some_part_in_A/ 是 A.txt 中大约一半的行。实际上是这样的:
<div>Apple</div>我需要在<div>Apple</div>之后从 B.txt 添加一些 50-100 行(或更多)