Кредит Bruno9779 за первоначальный проект этого ответа. Не уверен, почему он был самоудален, так как это был довольно хороший ответ:
Вы практически все сделали сами:
destinationDir="/destination/path/here/"
if cd "$destinationDir"; then
for file in *.csv; do
# run executable on "$file" and output
executable "$file" standard.csv > "${destinationDir}/output_${file}.csv"
done
else
echo "Unable to change to working directory."
fi
Только не забывайте заключать в кавычки имена файлов с переменными.
Вопрос решен с помощью предложения Ralph Rönnquist
cat INBOX | sed -z -e 's/=\r\?\n//g' | \ sed -e 's/.*u0026url=3D//;t a;d;:a' -e 's/\u\u0026ct=3D.*//' > output.txt
Вычисление занимает много времени, но он правильно извлекает URL.
Большое спасибо всем за помощь!
вы можете попробовать эту команду
awk -F"3D" '{print $4}' input.txt | sed "s/\\\u.*//"
Для обработки можно использовать командную строку, подобную следующей:
cat INBOX | sed -z -e 's/=\n//g' | \
sed -e 's/.*u0026url=3D//;t a;d;:a' -e 's/\\u0026ct=3D.*//'
Первый шаг sed
предназначен для соединения строк, заканчивающихся на "=" с последующей строкой, и, таким образом, в частности, для создания однострочных интересных строк.
Второй шаг sed
, во-первых, сокращает интересные строки, удаляя их головную часть, и отбрасывает все строки без этой головной части, а во-вторых, удаляет хвостовые части целевых строк.
Я не уверен, как вы получаете оповещения, но я приведу пример того, как это сделать, если бы оповещения были в простом текстовом файле. Я бы сначала разобрался с "=", используя tr, а затем использовал Pearl lookarounds с grep следующим образом ...
cat input.txt | tr --delete '=\n'| grep -oP '(?<=url3D).*?(?=\\u0026)' input.txt
Вывод по вашему примеру:
http://abcnews.go.com/US/wireStory/judge-orders-forfeiture-cartel-money-laundering-case-44765120