ssn*_*ssn 47 shell text-processing cut
我知道如何使用 cut 命令从一行中选择一个字段。例如,给定以下数据:
a,b,c,d,e
f,g,h,i,j
k,l,m,n,o
Run Code Online (Sandbox Code Playgroud)
这个命令:
cut -d, -f2 # returns the second field of the input line
Run Code Online (Sandbox Code Playgroud)
返回:
b
g
l
Run Code Online (Sandbox Code Playgroud)
我的问题:如何选择从末尾开始计数的第二个字段?在前面的示例中,结果将是:
d
i
n
Run Code Online (Sandbox Code Playgroud)
Tho*_*hor 66
前后反向输入cut用rev:
<infile rev | cut -d, -f2 | rev
Run Code Online (Sandbox Code Playgroud)
输出:
d
i
n
Run Code Online (Sandbox Code Playgroud)
Gil*_*not 19
尝试使用awk执行此操作:
awk -F, '{print $(NF-1)}' file.txt
Run Code Online (Sandbox Code Playgroud)
或使用perl:
perl -F, -lane 'print $F[-2]' file.txt
Run Code Online (Sandbox Code Playgroud)
或使用红宝石(感谢 manatwork):
ruby -F, -lane 'print $F[-2]' file.txt
Run Code Online (Sandbox Code Playgroud)
或使用bash(感谢 manatwork):
while IFS=, read -ra d; do echo "${d[-2]}"; done < file.txt
Run Code Online (Sandbox Code Playgroud)
或者使用python:
cat file.txt |
python -c $'import sys\nfor line in sys.stdin:\tprint(line.split(",")[-2])'
Run Code Online (Sandbox Code Playgroud)