2013-10-28 43 views
1

我一直在阅读教程,我需要使用cat和粘贴功能(用于制作一种数组,表格),所有教程都使用这些命令对文件进行读取,并从文件中读取文件硬盘驱动器让我的任务非常缓慢,所以我想知道如何将它们与变量一起使用,我试过并得到了错误的结果,所以也许你可以用sintaxis来帮助我。Cat和粘贴变量UNIX

基本上我想打一个表像这样的变量:

00001 Tacos
00023 pizza
00076 burger
00103 chopsuey
00167 burrito
01034 Tamales

和执行程序,并从输出采取具体的数据之后,我的每一个元素,所以我越来越:

  1. 玉米饼
  2. 比萨饼 ....

你不必做方案,只是想确保猫和粘贴是那些在这里和它们的语法使用,如果他们不接受我的任何建议。

对不起,我可能没有解释我自己,比较遗憾的是,我有A和B,两个变量,一个是00001,并通过为玉米饼,然后我希望他们合并到一起,并将其存储在一个变量,然后再做同样的事情,但要把它们放在一个新的行中。抱歉误会。

末我希望有一个变量这个在它:

00001 Tacos
00023 pizza
00076 burger
00103 chopsuey
00167 burrito
01034 Tamales

谢谢!

+0

这是不是很清楚你想要做什么。如果你'var = $(paste ...)'然后'echo“$ var”',格式将被保留。 – fedorqui

+0

哦,我的意思是我想粘贴或猫的参数变量 – Tamalero

回答

2

如果你有一个工具只对文件工作作为输入(例如diffpaste),你可以使用<(…)符号创建一个假的文件,其内容是由一个shell命令创建:

cat <(echo "hello world") 

这将打印hello world。假文件缺乏磁盘文件的一些功能;例如它不能是seek。所以想要seek文件中的特定位置的程序,例如读取文件两次,将会失败。但是,对于你的情况,就应该足够了,你可以使用这样的东西:

paste <(echo "$a") <(echo "$b") 

对于你的情况更具体:

cat input.txt | { 
    x='' 
    y='' 
    while read a 
    do 
    read b 
    x=$(echo "$x"; echo "$a") 
    y=$(echo "$y"; echo "$b") 
    done 
    paste <(echo "$x") <(echo "$y") 
} 

(我假设输入是这个在这里:)

00001 
Tacos 
00023 
pizza 
00076 
burger 
00103 
chopsuey 
00167 
burrito 
01034 
Tamales 
+0

是的,我做到了,大部分是因为我不知道如何:<(回声“你好世界”) – Tamalero

+0

想到这么:)是对我来说,当我发现那一刻时,它就是我的时刻。 – Alfe

+0

+1。不知道为什么这个答案之前没有提高。 – merlin2011