output="$(awk -F',' '/Name/ {print $9}' input.file)"
How do trim leading and trailing whitespace from bash variable called $output? How do I trim trailing whitespace from $output?
You can use sed, awk, cut, tr, and other utilities to remove whitespace from $output.
Sample data
Tutorial details | |
---|---|
Difficulty | Easy (rss) |
Root privileges | No |
Requirements | Linux/Unix+Bash/Ksh |
Time | N/A |
output=" This is a test"
Use echo statement to display $output:
echo "=${output}="
Sample outputs:
= This is a test=
sed Example
The syntax is:
echo "${output}" | sed -e 's/^[ \t]*//'
Sample outputs:
This is a test
Bash Example
The syntax is to remove leading whitespaces:
${var##*( )}
For example:
# Just remove leading whiltespace #turn it on shopt -s extglob output=" This is a test" output="${output##*( )}" echo "=${output}=" # turn it off shopt -u extglob
Sample outputs:
=This is a test=
To trim leading and trailing whitespace using bash, try:
#turn it on shopt -s extglob output=" This is a test " ### Trim leading whitespaces ### output="${output##*( )}" ### trim trailing whitespaces ## output="${output%%*( )} echo "=${output}=" # turn it off shopt -u extglob
Sample outputs:
=This is a test=
awk Example
The syntax is:
output=" This is a test " echo "=${output}=" ## Use awk to trim leading and trailing whitespace echo "${output}" | awk '{gsub(/^ +| +$/,"")} {print "=" $0 "="}'
Sample outputs:
=This is a test=
🐧 16 comments so far... add one ↓
Category | List of Unix and Linux commands |
---|---|
File Management | cat |
Firewall | Alpine Awall • CentOS 8 • OpenSUSE • RHEL 8 • Ubuntu 16.04 • Ubuntu 18.04 • Ubuntu 20.04 |
Network Utilities | dig • host • ip • nmap |
OpenVPN | CentOS 7 • CentOS 8 • Debian 10 • Debian 8/9 • Ubuntu 18.04 • Ubuntu 20.04 |
Package Manager | apk • apt |
Processes Management | bg • chroot • cron • disown • fg • jobs • killall • kill • pidof • pstree • pwdx • time |
Searching | grep • whereis • which |
User Information | groups • id • lastcomm • last • lid/libuser-lid • logname • members • users • whoami • who • w |
WireGuard VPN | Alpine • CentOS 8 • Debian 10 • Firewall • Ubuntu 20.04 |
check the title it says “While” Spaces
Thanks for the heads up!
I tend to just stick to sed for this typeof thing:
Since a lot of my work needs to live on BSD, AIX and Solaris, as well as on Linux, I tend to script very defensively and portably. It has saved my butt more times than bears mentioning…
If the content is a single line of text, why not just use echo ?
notice there are no double-quotes for the inner $VAR
… slight error …. it should be
This is the BEST site in the world. I can’t tell you how many times I have wound up here to find the answer to my question or problem. Great resource, thanks!!!
Hello..
Could you please help me out….
Here is my scenario:
1. i am listing some of the processes which are active and sending the output to temp.txt.
2. i got many processes, if i want to kill/doing some thing with any inactive process it should throw an error message.
3. how do i work with pattern matching commands in temp.txt?
Please suggest me the better answer..
Very helpful. Thanks.
I’m not sure why the examples use extglob in bash. It’s completely unneeded when using the ## or %% operators. ${VAR%% } will remove trailing whitespace, as long as it’s not mixed tabs and spaces.
echo ” blah ” | awk ‘{print $NF }’
You can also pipe to tr this:
Is this bash version specific ? Any reference for the same ?
Thanks
This is great useful site!!
Thanks!
I extend the ‘Bash Example’ as follows:
useful for whitespaces the ${var##*(tab|space)} form, where the tab is itself, and the space is also itself, it look like ${var##*( | )} or ${var%%( | )} typed in editor.
Thanks, and best regards, Miki
awk ‘{$1=$1};1’