将一个文件中的文本附加到另一个文件中的文本
我有两个单独的文本文件,一个包含 4 个字母的单词,另一个包含 4 位数字,全部位于单独的行中。一个文件中的单词与另一个文件中同一行的数字相对应。例如:
猫
老鼠
HATS
匹配
2287
7287
第4287章
我想要的是将数字附加到其匹配单词的末尾,所以它看起来像这样:
CATS2287
RATS7287
HATS4287
到目前为止,我所拥有的
for i in $(cat numbers); do
sed 's/$/'$i'/' words;
done
是这样的:但问题是 a) 不会打印/回显到新文件,b) 每次第一个循环到达新数字时它都会循环遍历每个单词,所以最后,所有单词都与数字文件中的最后一个数字配对。预先感谢您的帮助。
I have two separate text files, one with 4 letter words and one with 4 digit numbers, all on individual lines. The words in the on file correspond to the numbers on the same line in the other file. For example:
CATS
RATS
HATS
matches up with
2287
7287
4287
What I would like is to append the numbers to the end of their matching word, so it looks like this:
CATS2287
RATS7287
HATS4287
so far what I have is this:
for i in $(cat numbers); do
sed 's/$/'$i'/' words;
done
but the problem is a) that doesn't print/echo out to a new file and b) it loops through each word every time the first loop comes to a new number so in the end, all the words are paired up with the last number in the number file. Thanks in advance for the help.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(5)
概念验证
Proof of Concept
您可以使用优秀的小
paste(1)
实用程序:-d
指定分隔符列表;我给了它一个空白列表:没有分隔符,没有分隔符。You can use the excellent little
paste(1)
utility:-d
specifies a list of delimiters; I gave it a blank list: no delimiters, no delimiters.嗯,我用
-d""
粘贴的版本只会产生数字,单词会被覆盖(cygwin 上的 GNU 粘贴 8.10)。我的输入文件没有回车符。另外,仅使用 shell 内置函数
Hmm, my version of paste with
-d""
just results in numbers, the words get overwritten (GNU paste 8.10 on cygwin). my input files have no carriage returns.Also, just with shell builtins
在 Mac OS X 上:
On Mac OS X:
有几种方法可以做到这一点
粘贴:
awk
Bash:
Ruby(1.9+)
there are a few ways to do that
Paste:
awk
Bash:
Ruby(1.9+)