Tôi có tệp .CSV với định dạng dưới đây:
"column 1","column 2","column 3","column 4","column 5","column 6","column 7","column 8","column 9","column 10
"12310","42324564756","a simple string with a , comma","string with or, without commas","string 1","USD","12","70%","08/01/2013",""
"23455","12312255564","string, with, multiple, commas","string with or, without commas","string 2","USD","433","70%","07/15/2013",""
"23525","74535243123","string , with commas, and - hypens and: semicolans","string with or, without commas","string 1","CAND","744","70%","05/06/2013",""
"46476","15467534544","lengthy string, with commas, multiple: colans","string with or, without commas","string 2","CAND","388","70%","09/21/2013",""
Cột thứ 5 của tệp có các chuỗi khác nhau. Tôi cần lọc ra tệp dựa trên giá trị cột thứ 5. Hãy nói rằng, tôi cần một tệp mới từ tệp hiện tại chỉ có các bản ghi với giá trị "chuỗi 1" trong trường thứ năm của nó.
Đối với điều này, tôi đã thử lệnh dưới đây,
awk -F"," ' { if toupper($5) == "STRING 1") PRINT }' file1.csv > file2.csv
nhưng nó đã ném cho tôi một lỗi như sau:
awk: { if toupper($5) == "STRING 1") PRINT }
awk: ^ syntax error
awk: { if toupper($5) == "STRING 1") PRINT }
awk: ^ syntax error
Sau đó tôi đã sử dụng sau đây cho tôi một đầu ra lẻ.
awk -F"," '$5="string 1" {print}' file1.csv > file2.csv
Đầu ra:
"column 1" "column 2" "column 3" "column 4" string 1 "column 6" "column 7" "column 8" "column 9" "column 10
"12310" "42324564756" "a simple string with a comma" string 1 without commas" "string 1" "USD" "12" "70%" "08/01/2013" ""
"23455" "12312255564" "string with string 1 commas" "string with or without commas" "string 2" "USD" "433" "70%" "07/15/2013" ""
"23525" "74535243123" "string with commas string 1 "string with or without commas" "string 1" "CAND" "744" "70%" "05/06/2013" ""
"46476" "15467534544" "lengthy string with commas string 1 "string with or without commas" "string 2" "CAND" "388" "70%" "09/21/2013" ""
PS: Tôi đã sử dụng lệnh toupper để ở bên an toàn, vì tôi không chắc chuỗi sẽ ở dạng thấp hơn hay cao hơn. Tôi cần phải biết những gì sai với mã của tôi và nếu không gian trong chuỗi có vấn đề trong khi tìm kiếm một mẫu bằng AWK.
'","'
làm dấu phân cách, nếu không nó sẽ giải quyết được vấn đề của tôi ... giải pháp tuyệt vời ...