爲$find
的file.csv
第2列之間的以下awk
代碼的搜索,並輸出在第一個匹配行的第1列中找到的數據:如何匹配awk中的模式之前和之後的任何內容?
awk -v pattern="$find" '$2 ~ pattern { print $1; exit }' file.csv
例如,給定的file.csv
:
1,panda
2,zebra
3,bobcat
4,lion
5,cat
如果$find
設置爲「貓」,它打印「5」。
這似乎只匹配整個單元格的內容,類似於grep
中的^cat$
。
我該如何調整它,使其發現文本第一次出現在單元格內的某處,例如,如果$find
設置爲「cat」,則打印「3」,因爲「bobcat」包含單詞「cat 」。換句話說,與在CSV中匹配整個單元格不同,如果在單元格內的某個位置找到匹配項,就足夠了。只有
- 第一場比賽應該是輸出。
我嘗試以下,但他們沒有達到預期效果:在AWK Language Programming - Regular Expressions之前和在awk
後匹配任何
awk -v pattern="*$find*" '$2 ~ pattern { print $1; exit }' file.csv
我找不到任何說明。