Cat和Paste for变量UNIX

时间:2013-10-28 13:32:09

标签: unix paste cat

我一直在阅读教程,我需要使用cat和paste函数(用于创建一种数组,表),所有教程都在文件上使用这些命令,从硬盘读取文件正在完成我的任务非常非常慢,所以我想知道如何将它们与变量一起使用,我尝试并得到了错误的结果,所以也许你可以帮助我使用它的sintaxis。

基本上我想在这样的变量中创建一个表:

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

我在执行程序并从输出中获取特定数据后得到每个元素,所以我得到了:

  1. 00001
  2. 玉米饼
  3. 00023
  4. 比萨饼 ....
  5. 你不必执行该程序,只是想确保cat和paste是在这里使用的和他们的语法,如果他们不是我接受任何建议。

    抱歉,我可能没有解释自己,对不起,我有一个和b,两个变量,一个是00001,而且是Tacos,然后我希望它们合并在一起并存储它们在变量中,然后再次执行相同操作,但将它们放在一个新行中。对不起有误。

    最后,我想要一个变量

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

    谢谢!

1 个答案:

答案 0 :(得分: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
相关问题