Shell-Script

在 Unix Shell 腳本中的 Cut 中使用製表符分隔符

  • September 27, 2017

我有input.txt以 TAB 分隔格式包含以下數據的文件-

23776112        Inactive        Active
23415312        Inactive        Active

根據要求,在while循環中,我想使用剪切第一列的數據並列印它-

以下是程式碼的一部分-

......
......
   while read line
   do  
       SN=`echo ${line}|cut -d '       ' -f1`
       echo $SN
   done < input.txt
....
....

要將製表符用作上面的分隔符,我正在使用Ctrl V Tab

但輸出不如預期。我得到 O/P-

23776112 Inactive Active
23415312 Inactive Active

而我想要 O/P 像 -

23776112 
23415312
cut -f 1 input.txt

這為您提供了製表符分隔文件的第一列input.txt。預設欄位分隔符cut是製表符,因此無需進一步指定。

如果分隔符實際上是空格,請使用

cut -d ' ' -f 1 input.txt

如果事實證明有多個製表符和/或空格,請使用awk

awk '{ print $1 }' input.txt

無論您使用cut還是,此操作都不需要 shell 循環awk

另請參閱“為什麼使用 shell 循環處理文本被認為是不好的做法? ”。


您的腳本不起作用的原因是當您echo使用未引用的變數時選項卡會消失。

有關的:

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