Using curl wttr.in to Display Only Current Temperature Value

Abstract: Extract the current temperature integer from wttr.in using curl, grep, and sed for clean scripting output.

Created: 2026-10-15 by
To extract only the current temperature value from wttr.in using curl, you should pipe the output through grep and sed to filter for the specific numeric pattern. The command curl -s "wttr.in?0" retrieves the weather data, and by adding grep -oP '(?<=[°])(\d+)' or a similar regex, you can isolate just the integer representing the degrees. This approach strips away the unit labels like Celsius or Fahrenheit, providing a clean number for scripting or display purposes.

Understanding the Base Command

The foundation of this operation is the curl utility combined with the wget and cURL commands philosophy of handling web requests efficiently. By default, running curl wttr.in returns a full ASCII art weather forecast, which includes location names, date headers, and detailed hourly breakdowns. To get a more concise view suitable for parsing, you typically add the parameter ?0. This flag tells the service to return only the current condition summary rather than the multi-day forecast. When you execute curl -s "wttr.in?0", the response looks something like this:
+---------------------+
|       Mostly Cloudy |
|      ••••••••••••   |
|      18°C / 13°C    |
|                     |
|  Wind speed: 5 km/h |
+---------------------+
Your goal is to isolate the 18 from that line. The -s flag suppresses the progress meter, making the output cleaner for piping into other tools. Without it, curl might print download statistics to stderr, which can interfere with simple text processing if not redirected properly.

Parsing with Grep and Sed

Once you have the raw text, you need a method to extract the specific number. The most robust way is using grep with Perl-compatible regular expressions (PCRE). You want to find digits that are immediately preceded by the degree symbol (°). You can use the following command structure:
curl -s "wttr.in?0" | grep -oP '(?<=[°])\d+'
Here is how each part functions:
  • curl -s "wttr.in?0": Fetches the simplified weather data silently.
  • |: Pipes the standard output to the next command.
  • grep -oP: Uses the -o flag to print only the matched part of the line, and -P enables Perl regex syntax.
  • (?<=[°])\d+: This is the regex pattern. (?<=[°]) is a lookbehind assertion that ensures the match is preceded by the degree symbol but does not include it in the output. \d+ matches one or more digits.
If your system does not support -P (common in older BSD-based systems like macOS), you can use sed instead. The command would look like this:
curl -s "wttr.in?0" | sed -n 's/.*\(.\([0-9]*\)C.*/\1/p'
This sed command searches for a line containing digits followed by 'C' (for Celsius) or 'F'. It captures the digits inside parentheses and prints only that capture group. Note that this assumes the output format remains consistent with standard wttr.in responses. If the weather service changes its ASCII layout, this regex may need adjustment.

Handling Unit Conversion

By default, wttr.in returns temperatures in Celsius. If you require Fahrenheit, you can append ?u to the URL: curl -s "wttr.in?0u". The parsing logic remains largely the same, but you must ensure your regex accounts for the 'F' suffix if you are using the sed approach. For example, changing C to [CF] in the pattern allows flexibility. It is important to note that the lookbehind approach with grep -P is generally safer because it ignores the unit letter entirely. Whether the output says 18°C or 64°F, the pattern (?<=[°])\d+ will correctly extract 18 or 64 respectively. This makes your script more resilient to regional settings or user preferences configured on the wttr.in side.

Integrating into Bash Scripts

Once you have the working one-liner, you can store the result in a variable for further use in automation tasks. This is particularly useful for monitoring scripts or dashboard widgets.
TEMP=$(curl -s "wttr.in?0" | grep -oP '(?<=[°])\d+')
echo "Current temperature is $TEMP degrees"
Ensure that curl and grep are installed on your system. On minimal Linux distributions, grep might be a busybox implementation that lacks -P support. In such cases, falling back to awk or sed is necessary. For instance, an awk solution could be:
curl -s "wttr.in?0" | awk -F'[°]' '{print $2}' | awk '{print $1}'
This splits the string by the degree symbol and then takes the first word of the second field, effectively stripping any trailing characters. While slightly more verbose, it works across all POSIX-compliant environments. Always test these commands in your specific environment before deploying them to production servers, as network latency or API rate limits on wttr.in can occasionally cause empty outputs.

Frequently Asked Questions

Why does my command return an empty string?

This usually happens if the network request fails or if the wttr.in service is temporarily unavailable. Ensure you have internet access and check if the curl command returns HTTP 200. Additionally, verify that your locale settings do not alter the degree symbol, which could break the regex match.

Can I get the temperature in Kelvin?

The wttr.in service does not natively support Kelvin output via URL parameters. You must retrieve the Celsius or Fahrenheit value and convert it manually within your script using arithmetic expansion in bash or a calculation in Python or another language.

How do I handle errors if curl fails?

You should always check the exit status of curl. Use if ! curl -s ... ; then echo "Error"; fi to catch failures. This prevents your script from proceeding with empty variables, which could lead to unexpected behavior in downstream processes or notifications.

Is there a JSON alternative to parsing ASCII art?

Yes, wttr.in supports JSON output if you set the header Accept: application/json. Using curl -H "Accept: application/json" wttr.in returns structured data that can be parsed with tools like jq, which is often more reliable than regex against ASCII art.

Does this work on Windows PowerShell?

Standard PowerShell does not have native grep or sed commands. You would need to use PowerShell cmdlets like Select-String or -match operators to achieve similar results. Alternatively, installing WSL (Windows Subsystem for Linux) allows you to run the original bash commands directly.

Latest News

How to Display Output of xterm Command in Terminal Screen using Cron

Resolve the inability to display xterm output in a terminal screen from cron by redirecting logs or using wall instead of insecure X11 workarounds.

Read More
Expose Local Server on VPS Preserving Real Client IPs (OS Level)

Resolve VPS logging showing only gateway IPs by configuring reverse proxies to forward real client addresses via X-Forwarded-For headers.

Read More
How to Clear Recent Files History in Linux without Deleting Actual Files?

Clear recent files history in Linux by deleting ~/.local/share/recently-used.xbel without removing the actual files.

Read More
Best HDD Copy Strategy: Manually Syncing and Rewriting Scratch

Resolve data drift between two 4TB hard drives by using rsync with the --delete flag to manually sync and rewrite scratch data for an exact mirror.

Read More
Understanding Bash Prompt Abbreviations: An Overview

Resolve repetitive typing errors by creating and persisting Bash aliases in the .bashrc file for improved command-line efficiency.

Read More
Free Tools and Methods to Log Real-Time Performance Details in Task Manager

Log real-time CPU and memory metrics to CSV files using Windows Performance Monitor Data Collector Sets to troubleshoot system slowness.

Read More
Contact Qatar Airways Customer Service: Phone Number, Help Center, and More

Resolve urgent Qatar Airways reservation issues like flight changes and baggage claims using the US phone number +1801-855-5905 or online self-service tools.

Read More
Windows 11: Alt Codes Displaying Wrong Characters - Solutions

Resolve Windows 11 Alt codes showing wrong characters by verifying the US keyboard layout and enabling Num Lock.

Read More
Run Programs with Elevated Privileges: A Comprehensive Guide

Eliminates the need to type sudo for frequent administrative tasks by configuring .bashrc aliases or functions.

Read More
Dynamically Changing Dates in Excel Formulas Using Cells

Eliminate manual date updates in Excel by using cell references to create dynamic formulas that automatically adjust calculations when input dates change.

Read More
Granting Edit Access to a Specific Excel Sheet in an Office 365 User Email ID-Based Login

Excel Online lacks native sheet-level permissions, so users must split workbooks or use worksheet protection to isolate edit access for specific tabs.

Read More
Creating Network Load on Local Wi-Fi from One PC

Generate sustained Wi-Fi bandwidth load from a single PC using a VM SFTP server to test router stability and throughput.

Read More
Changing the Default Editor for Batch Files in Windows 11's File Explorer

Resolve the issue of batch files opening in Notepad by changing the default editor to a preferred application like VS Code.

Read More
Gain WiFi Connection Minutes Before Losing it by Changing MAC Address

Bypass MAC address filtering to restore WiFi connectivity temporarily when a device is blocked by network administrators.

Read More
Photos Folders Turned Black: Troubleshooting Picture Applications on Windows

Resolve black screens in Windows Photos by resetting the app, updating graphics drivers, and repairing system files.

Read More
Troubleshooting High CPU Temperature Values: A Step-by-Step Guide

Resolve high CPU temperatures and thermal throttling by monitoring with Speedfan, cleaning dust from cooling components, and replacing degraded thermal paste.

Read More
Make cURL establish TLS connection with CA unknown

Resolve cURL TLS connection failures with unknown or self-signed certificates by using the --insecure flag to bypass CA validation.

Read More
Troubleshooting Incorrect Network Metrics Values in Grafana, Prometheus, InfluxDB, and Telegraf

Fix incorrect network metrics in Grafana, Prometheus, InfluxDB, and Telegraf by verifying interface selection, resolving unit mismatches, and handling counter resets.

Read More
Start Another Terminal Window (cmd.exe) Windows Repair/Troubleshoot

Provides step-by-step instructions to access the Windows Command Prompt via bootable media for advanced system repair and troubleshooting.

Read More
Thinkpad P1 Gen 6: Sudden Thunderbolt 3 Dock USB-C Charging Stopped Working

Resolve sudden Thunderbolt 3 dock USB-C charging and internet failure on ThinkPad P1 Gen 6 by updating firmware, resetting the dock, and adjusting power settings.

Read More
ASUS Windows 11 Laptop: Internet Connection Issue with Hotspot

Resolve ASUS Windows 11 laptop spinning wheel issue when connecting to mobile hotspot by resetting network stack, disabling IPv6, and adjusting power settings.

Read More
Developing iOS Project with Firebase: Logging in and Sending Push Notifications

Integrates Firebase to enable secure user authentication and push notifications in iOS applications.

Read More
Troubleshooting Bash Script with Suspected Issues of Spaces, Dashes, Filenames and Quoting

Resolve Bash script failures caused by word splitting, globbing, and special characters in filenames by applying proper quoting techniques.

Read More
Populating OneDrive Folder for Local Backup without Affecting Remote Files

Prevent OneDrive from deleting remote files during Windows reinstallation by unlinking the account or using symbolic links to isolate local data.

Read More
Force First Frame as Keyframe Without Re-encoding: A Quick Solution

Resolve inaccurate seeking and playback glitches by re-encoding video to ensure the first frame is a valid keyframe.

Read More
Find Information in Database Using WSL (Ubuntu) on Windows-10

Resolve database connection issues from WSL Ubuntu on Windows 10 by configuring client tools and network access to query remote or local servers.

Read More
Configuring a New Router with Different Networks: One Family, One Guest

Resolve IP conflicts and isolate guest traffic by configuring a second router with a distinct subnet via its WAN port.

Read More
Quickly Open Multiple Stock Websites with a Single Command

Solve the problem of manually opening multiple stock research websites by creating a single command to launch them simultaneously on Windows, macOS, or Linux.

Read More
Improved Adobe Acrobat Search Experience: Access Advanced Search with Ease

Access advanced search filters like case sensitivity and regex in Adobe Acrobat by clicking More Options in the Find bar.

Read More
Port Forwarding VM via OpenVPN: A Comprehensive Guide

Configure OpenVPN server and iptables to forward specific ports from VPN clients to a virtual machine's internal IP address.

Read More
Understanding Partitions in the 1980s: A Look Back at MS-DOS and Master Boot Record

Explains how the Master Boot Record and partition table enabled MS-DOS to manage multiple disk volumes on a single physical drive.

Read More
Windows 10 Enterprise: Keyboard Not Detected in Managed Organization with Admin Privileges

Resolve Windows 10 Enterprise keyboard detection failures caused by Group Policy restrictions, driver corruption, or USB enumeration errors.

Read More
Can't Find x86_64 Versions of Applications on MacOS arm64 (M1)

Resolve missing x86_64 app issues on M1 Macs by installing Rosetta 2 and reinstalling apps as universal binaries.

Read More
How to Hide Installation Source for an Android App

Manage Android app installation source visibility by using USB transfers or file managers to reduce browser traces and isolate data via work profiles.

Read More
Connecting Momentus 4200.2 ST9808210A Hard Drive via USB Cable

Resolve inability to access Seagate Momentus 4200.2 ST9808210A hard drive by connecting it via USB using a compatible SATA-to-USB adapter and configuring the disk in Windows.

Read More