В настоящее время я использую grep, чтобы попытаться извлечь конкретный текст из каждой строки файла. Он успешно извлекает совпадения, однако я хотел бы, чтобы он сохранил все строки, у которых нет совпадений (оставьте их как пустую строку).
Это то, что я пробовал до сих пор (чтобы получить название города в каждой строке):
grep -o -P '(?<="city":").*?(?=")' input.txt
Пример ввода:
email":"addictedtotlick7@gmail.com","last_name":"THOMPSON","first_name":"ERIN",,"__v":0,,,,"state":"NY","city":"north tonawanda"}
first_name":"chris","last_name":"caul",,"email":"dawgzn@mail.com",,,,"__v":0}
email":"lesliebo993@hotmail.com",,"first_name":"LESLIE","last_name":"RAMBO",,"city":"DOTHAN","state":"AL",,,"__v":0,
email":"malala@yahoo.com",,,"state":"GA","city":"NORCROSS",,"last_name":"KEO","first_name":"CATHY",,"__v":0,
email":"kdela@gmail.com",,"state":"FL","city":"HOLLYWOOD",,"last_name":"DE LA CRUZ","first_name":"KIDA",,"__v":0,
Желаемый вывод:
north tonawanda
DOTHAN
NORCROSS
HOLLYWOOD
Рад попробовать что-то в SED, если это проще, но предпочел бы избегать AWK, так как мне приходится работать с большими файлами, но я не уверен, что у меня достаточно оперативной памяти.