Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/28.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux Shell脚本来分隔每行中的值并将其放入两个变量中_Linux_Bash_Unix_Awk_Sh - Fatal编程技术网

Linux Shell脚本来分隔每行中的值并将其放入两个变量中

Linux Shell脚本来分隔每行中的值并将其放入两个变量中,linux,bash,unix,awk,sh,Linux,Bash,Unix,Awk,Sh,我有一个文本文件,每行有2个值。我需要将这两个值放在两个不同的变量中,即var和var2,并对每一行进行进一步的处理。分隔符是两个变量之间的空格 使用问题中可用的一些格式将注释转换为问题中的信息 我有一个文本文件,abc.txt: apple jobs microsoft gates 我希望第一行的$var中有“apple”,$var2中有“jobs”;同样的事情在迭代时应该在相同的$var和$var2中为我提供“microsoft”和“gates”。当我使用: var=`awk -F' '

我有一个文本文件,每行有2个值。我需要将这两个值放在两个不同的变量中,即var和var2,并对每一行进行进一步的处理。分隔符是两个变量之间的空格


使用问题中可用的一些格式将注释转换为问题中的信息

我有一个文本文件,
abc.txt

apple jobs
microsoft gates
我希望第一行的
$var
中有“apple”,
$var2
中有“jobs”;同样的事情在迭代时应该在相同的
$var
$var2
中为我提供“microsoft”和“gates”。当我使用:

var=`awk -F' ' '{print $1}' abc.txt`

假设你的输入文件是

$ cat var2
a b
c d
如果您想将每行中的两个值分配给两个变量,并在循环中对它们进行操作,您可以这样做

$ while read a b; do echo "two vars are: " $a $b; done < var2
two vars are:  a b
two vars are:  c d
$while read a b;do echo“两个变量是:$a$b;完成

每次迭代都将重新分配源文件中的值。

您尝试了什么?您计划使用哪个命令?你有没有读过这一页的手册?为什么不呢?您想要做的是一个非常基本的
read
命令应用程序-尽管如果处理需要
awk
,这也是处理数据的好方法。哪一个更好取决于“进一步处理”。目前我能够在一行中分离两个值。问题在于多行。我目前能够读取这些行中的每一行并打印它们的计数。您需要显示您得到的数据,并解释其原因,以便我们能够帮助您。如果你能把这些值分开,我不知道问题是什么。您是否为每一行寻找不同的变量?您考虑过数组吗?@SnigdhaGayatri请编辑您的问题,并附上文件示例、预期结果以及您已经厌倦的内容。它是文本文件中的一行吗?请:用额外的信息更新问题,这样你就可以把它整齐地格式化。要缩进代码或数据,请在编辑框中键入希望显示的if,然后选择它,并使用编辑框上方的
{}
按钮缩进所选内容。
读取时,b
将在读取数据时损坏数据。当IFS=read-rab
时,请始终使用
,除非您有特定的理由不完全理解所有的注意事项(在这种情况下,您需要的不是
IFS=
)。我不同意这个评论,@EdMorton。我肯定你会不同意我的意见;这是必然的。所以我将我的反对意见记录在案,我们可以把讨论留在那里。如果你想讨论这个问题,可以私下讨论;我的电子邮件在我的个人资料中。@JonathanLeffler你不同意什么?当文件包含
a\tb
时,尝试
读取
,您会发现
a
填充了
atb
,而不是
a\tb
,就像您通过
读取-r a
得到的那样。我不想就此展开辩论,
IFS=read-r var
是如何在shell中正确读取文件的开始(您还应该使用文件描述符做其他事情,但它们通常不会产生问题)。