LINUX.ORG.RU

конкатенация строк в bash

 ,


0

1

привет!

прошу помочь мне с башем. суть такова:

$cat /proc/aaa
aaa

$cat /proc/bbb
bbb

мне нужно сконкатенировать выхлопы этих команд и записать их в файл через разделитель в две колонки, чтобы получилось примерно так:

$cat file.txt

aaa bbb
aaa bbb
aaa bbb

подскажите как это можно сделать?



Последнее исправление: CYB3R (всего исправлений: 1)

М

$> cat file1
aaa
aaa
aaa
aaa
aaa
aaa
aaa
aaa

$> cat file2
bbb
bbb
bbb
bbb
bbb
bbb
bbb
bbb

$> ghci
GHCi, version 7.4.2: http://www.haskell.org/ghc/  :? for help
Loading package ghc-prim ... linking ... done.
Loading package integer-gmp ... linking ... done.
Loading package base ... linking ... done.
(0.01 secs, 4323528 bytes)
Loading package filepath-1.3.0.0 ... linking ... done.
Loading package old-locale-1.0.0.4 ... linking ... done.
Loading package old-time-1.1.0.0 ... linking ... done.
Loading package bytestring-0.9.2.1 ... linking ... done.
Loading package unix-2.5.1.1 ... linking ... done.
Loading package directory-1.1.0.2 ... linking ... done.
Loading package process-1.1.0.1 ... linking ... done.
Loading package goa-3.1 ... linking ... done.
it :: ()
(0.06 secs, 7420664 bytes)
> putStrLn =<< unlines <$> map (\(a,b) → BSC.unpack $ BSC.unwords [a,b]) . uncurry zip <$> (uncurry (liftM2 (,)) $ join (***) ((BSC.lines <$>) . BSC.readFile) ("file1","file2"))
aaa bbb
aaa bbb
aaa bbb
aaa bbb
aaa bbb
aaa bbb
aaa bbb
aaa bbb

it :: ()
(0.01 secs, 5602744 bytes)
dmitry_malikov
()

andor@wrka ~ $ echo -n > aaaa; echo -n > bbbb; for i in {0..10}; do echo aaaa$i >> aaaa; echo bbbb$i >> bbbb; done
andor@wrka ~ $ paste aaaa bbbb
aaaa0 bbbb0
aaaa1 bbbb1
aaaa2 bbbb2
aaaa3 bbbb3
aaaa4 bbbb4
aaaa5 bbbb5
aaaa6 bbbb6
aaaa7 bbbb7
aaaa8 bbbb8
aaaa9 bbbb9
aaaa10 bbbb10

AnDoR
()

плюсую paste, остальные велосипеды в отвал

zolden
()
Ответ на: комментарий от dmitry_malikov

имхо здесь point-free слишком жесткий, с локальной ф-ей будет читабельнее (и короче; для большого входа можно вернуть unlines):

mapM_ putStrLn =<< let get = fmap lines . readFile in zipWith (\ a b -> a ++ "\t" ++ b) <$> get "aaa" <*> get "bbb"
anonymous
()
Ответ на: комментарий от saidmir

и что, сей способ работает при числе строк больше 1?

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.