Cut

當您無法從頭開始計數時選擇一個欄位

  • February 9, 2014

我有一個長文件(超過 20000 行),其中每一行都是對一本書的描述:

book_number "title of the book" size type author_number

其中引號中的元素是帶引號的字元串,其他元素是數字,除了 type 是單個單詞:

23446 Raising Steam 537724 EPUB 4

我想提取所有大小欄位,但使用 cut 你不能使用負數從拆分結果的後面計算-d " "

cut -d " " -f -2 books.txt

我不能從前面數,因為書名中可能有任意數量的空格(我沒有編造這種格式,我會使用需要引用的 CSV 或 JSON)。

我錯過了一些允許使用的選項cut嗎?我還能用什麼來通過單行解決方案獲得倒數第二個欄位?

使用 python 你可以做到這一點(注意-3):

python -c "for x in open('books.txt'): print x.split(' ')[-3]"

或與awk

awk '{ print ( $(NF-2) ) }' books.txt

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