切り取りコマンドを使用して行からフィールドを選択する方法を知っています。たとえば、次のデータが提供されます。
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
私の質問:2番目のフィールドを選択する方法計算最後から?前の例では、結果は次のようになります。
d
i
n
答え1
cut
反転前後に入力を使用してくださいrev
。
<infile rev | cut -d, -f2 | rev
出力:
d
i
n
答え2
この試みアッ:
awk -F, '{print $(NF-1)}' file.txt
または使用真珠:
perl -F, -lane 'print $F[-2]' file.txt
または使用ルビー(仕事をしてくれたManatに感謝します):
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])'
答え3
sedを使用してください:
sed -E 's/^([^,]*,)*([^,]*)(,[^,]*){1}$/\2/' infile
出力:
d
i
n
説明する
([^,]*,)*
カンマが続くカンマ以外の文字の数に関係なく一致します。つまり、列数に関係なく一致します。([^,]*)
列を一致させます。(,[^,]*){1}
最後の3番目の列と一致する{1}
ように数量子を変更する場合は、最後の1列と一致します。{2}