[英]Select a particular column using awk or cut or perl
我需要從制表符分隔文件中選擇第7列。 例如:
cat filename | awk '{print $7}'
問題是第4列中的數據有多個值,中間有空白。 示例 - 以下輸出中的最后一行:
user \Adminis FL_vol Design 0 - 1 -
group 0 FL_vol Design 19324481 - 3014 -
user \MAK FL_vol Design 16875161 - 2618 -
tree 826 FL_vol Out Global Doc Mark 16875162 - 9618 - /vol/FL_vol/Out Global Doc Mark
如果數據明確地以制表符分隔,那么cut
將在選項卡上切割,而不是空格:
cut -f7 filename
你也可以用awk
做到這一點:
awk -F'\t' '{ print $7 }'
如果字段由制表符分隔,並且您擔心某些字段包含空格,則此處沒有問題,只需:
cut -f 7
(剪切默認為制表符分隔的字段。)
根據輸入文件的格式判斷,您可以使用-
而不是空格來分隔:
awk 'BEGIN{FS="-"} {print $2}' filename
FS
代表Field Separator,只是將其視為輸入的分隔符。 -
,之前你的第7個領域成為第2個領域。 filename
作為awk的參數。 或者,如果您的數據字段由制表符分隔,則可以更明確地執行以下操作:
awk 'BEGIN{FS="\t"} {print $7}' filename
這將解決問題,因為Out Global Doc Mark
看起來被空格分開。
這可能適合你(GNU sed):
sed -r 's/(([^\t]*)\t?){7}.*/\2/' file
此替換命令選擇行中的所有內容並返回第7個非制表符。 在sed
,由(...)
分組的最后一個東西將通過使用反向引用在替換的左側返回。 在這種情況下,第一反向參考將返回兩個非制表符和制表符(如果存在的NB ?
元字符其中一個或沒有該訴訟模式)。該.*
剛剛吞噬了剩下的如果有的話。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.