Bash

在 UNIX 中一起顯示時,變數一中的命令會影響其他變數的輸出

  • December 16, 2020

我有兩個文件命名 Extra_info 和 Class_info

Class_info 包含數據:

stuId stuName stuClass 
S01    Josh  First
S02    harsh    First
S03    Roop     Second
S04    Kali     Third

Extra_info 包含有關學生的額外資訊,例如

stuId stuCity stuEmail         stuPhone
S01    Poh  faltu@gmail.com  1234567890

我使用 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

而不是顯示:

    S01 jagdeep First Sirsa  faltu@gmail.com  1234567890

它正在顯示:

    Sirsa  faltu@gmail.com  1234567890

正如我在回顯時所想的那樣,變數 res2 使 res1 的結果無效。

請提出可能的原因,並提供相同的解決方案。

您的輸入文件可能有 CR-NL 行結尾,所以 $ res1 returns the cursor to the beginning of the line then then $ res2 覆蓋它。執行您的文件dos2unix以解決該問題。

s=`grep jagdeep file1.txt |awk '{print $1}'`
egrep $s file2.txt

引用自:https://unix.stackexchange.com/questions/115935