Date

顯示 grepped 模式的第 n 個實例

  • May 17, 2012

所以這是我的問題。我有一個 .csv 文件(Current.csv)的問題,因為在整個數據中隨機放置了逗號,所以 awk 文件不會為我正在尋找的特定類型的資訊提供恆定的列號. 幸運的是,我意識到此資訊始終是日期格式 (m,mm)/(d,dd)/yy 的第三個實例。所以我正在嘗試下面的正則表達式來僅顯示第 i 行中的日期:

awk -F',' '{if (NR==$i)print}' Current.csv | grep -o "[0-9]{1,2}/[0-9]{1-2}/[0-9]{1,2}" | echo

到目前為止它沒有顯示任何內容,我完全不知道為什麼。我對顯示第三個的猜測是將其全部輸入:

awk {print $3}

關於 awk 正則表達式搜尋問題的任何想法?

範例行

“lettershere”,numbershere,“retardedbrokenquotehere,mm/dd/yy,morestuff,mm/dd/yy,numbers,mm/dd/yy

假設 CSV 文件是有效的(即包含逗號的欄位被引用),您應該使用實際將其解析為 CSV 的東西。以下簡單的 Python 腳本將提取每行的第二列。

python -c 'import csv; import sys; [sys.stdout.write(row[1]+"\n") for row in csv.reader(sys.stdin)]'

i 未設置,因此預設為零,無論如何您的意思是 i 而不是 $i。

您需要 grep -E 來擴展正則表達式。

月份欄位中的 {1-2} 應為 {1,2},正斜杠應受反斜杠保護。

管道回顯將失去任何輸出,因為它不是過濾器,並且在任何情況下都不需要。

正如 mgorven 建議的那樣,使用處理 csv 的不同方法。

引用自:https://serverfault.com/questions/389895