我有两个单独的文本文件,一个包含4个字母的单词,另一个包含4位数字,所有这些都在各行上。文件中的单词对应于另一个文件中同一行的数字。例如:
CATS
大鼠
HATS
与
匹配 2287
7287
4287
我想要的是将数字附加到匹配单词的末尾,所以它看起来像这样:
CATS2287
RATS7287
HATS4287
for i in $(cat numbers); do
sed 's/$/'$i'/' words;
done
但问题是a)没有打印/回显到新文件而b)每次第一个循环到达一个新数字时它会遍历每个单词,所以最后所有的单词都配对了使用数字文件中的最后一个数字。在此先感谢您的帮助。
答案 0 :(得分:2)
paste -d "" /path/to/letters /path/to/numbers
$ paste -d "" CATS NUMS
CATS2287
RATS7287
HATS4287
答案 1 :(得分:2)
您可以使用优秀的小paste(1)
实用程序:
$ cat a
CATS
RATS
HATS
$ cat b
2287
7287
4287
$ paste -d "" a b
CATS2287
RATS7287
HATS4287
$
-d
指定分隔符列表;我给了它一个空白列表:没有分隔符,没有分隔符。
答案 2 :(得分:1)
嗯,我的-d""
粘贴版本只会产生数字,这些字会被覆盖(在cygwin上的GNU粘贴8.10)。我的输入文件没有回车。
paste words numbers | tr -d '\t'
另外,只使用shell builtins
exec 3<words
exec 4<numbers
while read -u3 word; do
read -u4 num
echo $word$num
done
exec 3<&-
exec 4<&-
答案 3 :(得分:1)
在Mac OS X上:
paste -d "\0" <(echo abc) <(echo def)
答案 4 :(得分:0)
有几种方法可以做到这一点
粘贴:
paste -d "" file1 file2
AWK
awk '{ getline f<"file2" ; print $0f}' file1
击:
exec 6<"file2"
while read -r line
do
read -r S <&6
printf "${line}${S}\n"
done <"file1"
exec >&6-
红宝石(1.9 +)
ruby -ne 'BEGIN{f=File.open("file1")};print $_.chomp+f.readline;END{f.close}' file