在文本Bash Linux

时间:2016-11-26 04:22:17

标签: linux bash

快速提问。

基本上我想从文本文件中获取行/行,其中列以特定数字开头。 我收到信息的文本文件中的示例行是

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

每一行用“:”隔开我想通过使用数字“1”来获取第一行。它将显示第1行,我正在寻找的那一行。但是也会显示以“11”开头的行,因为在第三列中有“1”。

到目前为止我正在使用它,这是我需要修复的代码

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

其中$ cuenta保存我想要的数字,例如:1和$ documento是我正在使用的txt文件。 这将打印出文本中的第1,2和3列,但也将打印2行,1和11,因为我之前说过,第3列中有1行

有没有办法只使用grep来使用第1列? 我将使用代码来捕获变量中的某些列以供以后使用。

1 个答案:

答案 0 :(得分:1)

使用awk进行基于列的搜索 -

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

这只匹配第一列中1的行。