2016-11-26 34 views
-1

有一個簡短的問題。在文本Bash Linux的特定列上使用grep

基本上我正在尋找從列中以特定數字開始的文本文件中獲取行/行。從文本文件I'm獲取信息 的例子線

1  : ACTIVO    :  : 0 
11  : ACTIVO CIRCULANTE : 1 : 0 
111 : CAJA    : 11 : 0 
11101 : CAJA GENERAL  : 111 : 0 
11102 : CAJA CHICA   : 111 : 0 

分隔每一行「:」我現在希望通過使用數字「1」,以獲得例如..第一行。它會顯示第一行,即我尋找的行。但也會顯示以「11」開頭的行,因爲在第三列中有「1」。使用

I'm這到目前爲止,是我需要修復

grep -w "$cuenta" $documento | cut -d":" -f1,2,4 

其中$ CUENTA擁有我想要的號碼,例如代碼:1和這份執行$是txt文件I'm使用。 這將打印我的文字列1,2和3,但也將打印2行,1和11之一,因爲如前所述,在第三列有1

有沒有一種方法可以使用grep僅使用第1列? 我將使用代碼來捕獲變量中的某個列以供以後使用。

+0

'grep'^ 1 []'filename'使用正則表達式將搜索定位到第一列。 –

回答

1

使用awk這些列基於搜查─

cuenta=1 
awk -F: -v var="$cuenta" '$1 == var {print $0}' $documento | cut -d":" -f1,2,4 

這將只匹配具有在第一列1線。