Shell

如何從從末尾開始計數的文本行中剪切(選擇)一個欄位?

  • June 8, 2021

我知道如何使用 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])'

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