Cut
當您無法從頭開始計數時選擇一個欄位
我有一個長文件(超過 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