变量一中的命令在 UNIX 中一起显示时会影响其他变量的输出

Lea*_*ner 4 bash awk echo cut

我有两个文件命名为 Extra_info 和 Class_info

Class_info 包含数据:

stuId stuName stuClass 
S01    Josh  First
S02    harsh    First
S03    Roop     Second
S04    Kali     Third
Run Code Online (Sandbox Code Playgroud)

Extra_info 包含有关学生的额外信息,例如

stuId stuCity stuEmail         stuPhone
S01    Poh  faltu@gmail.com  1234567890
Run Code Online (Sandbox Code Playgroud)

我使用 grep for stuId 从两个文件中获取结果并将结果显示为:

res1=`grep $stuId $locDir/Class_info`
res2=`grep $stuId $locDir/Extra_info|cut -d" " -f2-` 
## also I tried res2=`grep $stuId $locDir/Extra_info|awk '{$1="" ; print $0}'`
echo $res1 $res2
Run Code Online (Sandbox Code Playgroud)

而不是显示:

     S01 jagdeep First Sirsa  faltu@gmail.com  1234567890
Run Code Online (Sandbox Code Playgroud)

它显示:

     Sirsa  faltu@gmail.com  1234567890
Run Code Online (Sandbox Code Playgroud)

正如我在回声时所想的那样,变量 res2 使 res1 的结果无效。

请提出可能的原因,并为此提供解决方案。

gle*_*man 9

您的输入文件可能有 CR-NL 行结尾,因此 $res1 将光标返回到行首,然后 $res2 覆盖它。运行你的文件dos2unix来解决这个问题。