Shell
如何從從末尾開始計數的文本行中剪切(選擇)一個欄位?
我知道如何使用 cut 命令從一行中選擇一個欄位。例如,給定以下數據:
a,b,c,d,e f,g,h,i,j k,l,m,n,o
這個命令:
cut -d, -f2 # returns the second field of the input line
回報:
b g l
我的問題:如何選擇從最後開始計數的第二個欄位?在前面的範例中,結果將是:
d i n
cut
用前後反轉輸入rev
:<infile rev | cut -d, -f2 | rev
輸出:
d i n
嘗試使用awk執行此操作:
awk -F, '{print $(NF-1)}' file.txt
或使用perl:
perl -F, -lane 'print $F[-2]' file.txt
或使用ruby (感謝 manatwork):
ruby -F, -lane 'print $F[-2]' file.txt
或使用
bash
(感謝 manatwork):while IFS=, read -ra d; do echo "${d[-2]}"; done < file.txt
或使用python:
cat file.txt | python -c $'import sys\nfor line in sys.stdin:\tprint(line.split(",")[-2])'