এটি আবার ঘুরে দেখা এবং বাশ শেল ব্যতীত আর কিছু ব্যবহার করার চেষ্টা না করা, অন্য একটি লাইন সমাধান হ'ল:
while read url; do url="${url##*/}" && echo "${url%%\'*}"; done < file.in > file.out
যেখানে ফাইল.ইনেকে 'নোংরা' ইউআরএল তালিকা এবং ফাইল.আউটে 'ক্লিন' ইউআরএল তালিকা থাকবে। কোনও বাহ্যিক নির্ভরতা নেই এবং কোনও নতুন প্রক্রিয়া বা সাবশেলগুলি স্পোন করার দরকার নেই। মূল ব্যাখ্যা এবং আরও নমনীয় স্ক্রিপ্ট অনুসরণ করা হয়। সেখানে পদ্ধতির একটি ভাল সারাংশ এখানে , উদাহরণস্বরূপ 10-10 দেখুন। এটি বাশের প্যাটার্ন ভিত্তিক প্যারামিটার বিকল্প।
ধারণাটি প্রসারিত:
src="define('URL', 'http://url.com');"
src="${src##*/}" # remove the longest string before and including /
echo "${src%%\'*}" # remove the longest string after and including '
ফলাফল:
url.com
কোনও বাহ্যিক প্রোগ্রাম কল করার প্রয়োজন নেই। তদতিরিক্ত, নিম্নলিখিত বাশ স্ক্রিপ্ট, get_urls.sh
আপনাকে সরাসরি বা স্টিডিন থেকে একটি ফাইল পড়ার অনুমতি দেয়:
#!/usr/bin/env bash
# usage:
# ./get_urls.sh 'file.in'
# grep 'URL' 'file.in' | ./get_urls.sh
# assumptions:
# there is not more than one url per line of text.
# the url of interest is a simple one.
# begin get_urls.sh
# get_url 'string'
function get_url(){
local src="$1"
src="${src##*/}" # remove the longest string before and including /
echo "${src%%\'*}" # remove the longest string after and including '
}
# read each line.
while read line
do
echo "$(get_url "$line")"
done < "${1:-/proc/${$}/fd/0}"
# end get_urls.sh
cat file.php | grep 'URL' | cut -d "'" -f 4
।