簡體   English   中英

在bash中讀取和比較.txt文件中的列

[英]Reading and comparing column in .txt file in bash

我得到了.txt文件,其內容是

5742060626,Pimpan Tantivaravong女士,女

5742065826,Kaotip Tanti女士,女

-我創建了一個接口腳本以在此文件中添加列表首先,我必須將輸入ID與列表中的退出ID進行比較。 我使用cut命令僅讀取.txt文件的第一列。 但是,當我嘗試進行比較時遇到了一個問題。

這是我的代碼。

--

!/bin/bash
#
datafile='student-2603385.txt'

while read p;
do

if [ "$id" == (echo $p | cut -d, -f1) ]

then
echo 'duplicate id'

fi
done <$datafile

--

誰能建議我,我該怎么辦? 謝謝

您的腳本有許多引用錯誤,當變量包含文件名時總是引用變量擴展,如果您希望避免通過shell進行單詞拆分和路徑名擴展,也應使用引號。

撇開它,在if [ "$id" == (echo $p | cut -d, -f1) ]

  • 您需要命令替代, $()echo ... | cut ...周圍echo ... | cut ... echo ... | cut ... ,而不是subshel​​l ()

  • 您還需要在$()周圍$()引號,以防止單詞分裂(和路徑名擴展)

  • ==是bash-ism,不是POSIX定義的,只是提醒

  • 嘗試使用[[盡可能多地作為shell關鍵字[[處理分詞

因此,使用test[ ):

if [ "$id" == "$(echo "$p" | cut -d, -f1)" ]

更好:

if [[ $id == $(echo "$p" | cut -d, -f1) ]]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM