Bash
在 UNIX 中一起顯示時,變數一中的命令會影響其他變數的輸出
我有兩個文件命名 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