1

我一直在阅读教程,我需要使用 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,by 是 Tacos,然后我希望它们合并在一起并将它们存储在一个变量中,然后再做同样的事情但是将它们放在一个新行中。很抱歉造成误解。

最后我想要一个带有这个的变量:

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

谢谢!

4

1 回答 1

3

如果您有一个工具只处理文件作为输入(例如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
于 2013-10-28T13:50:00.473 回答