【问题标题】:Cat and Paste for variables UNIX变量 UNIX 的 Cat 和 Paste
【发布时间】:2013-10-28 13:32:09
【问题描述】:

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

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

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

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

  1. 00001
  2. 炸玉米饼
  3. 00023
  4. 比萨 ....

您不必执行该程序,只是想确定 cat 和 paste 是在此处使用的以及它们的语法,如果不是,我接受任何建议。

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

最后我想要一个变量,里面有这个:

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

谢谢!

【问题讨论】:

  • 不是很清楚你想做什么。如果你先var=$(paste ...),然后echo "$var",格式将被保留。
  • 哦,我的意思是我希望 paste 或 cat 的参数是变量

标签: unix paste cat


【解决方案1】:

如果您的工具仅处理作为输入的文件(例如 diffpaste),则可以使用 <(…) 表示法创建一个假文件,其内容由 shell 命令创建:

cat <(echo "hello world")

这将打印hello world。假文件缺乏磁盘文件的某些功能;例如,它不能是seeked。因此,想要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

【讨论】:

  • 是的,我做到了,主要是因为我不知道如何:
  • 这么想 :) 当我找到那个时,对我来说也是一个惊喜时刻。
  • +1。不知道为什么这个答案以前没有被赞成。
  • @merlin2011 因为这是一个非常具体的问题,其他人不会关注。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-09-28
  • 2011-03-01
  • 1970-01-01
  • 2013-12-13
相关资源
最近更新 更多