Limit the number of characters in bash output


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Limit the number of characters in bash output
# 1  
Old 10-12-2014
Limit the number of characters in bash output

Hi, I need some help with this:
I'm making a script which does a couple of things with image files. The script is supposed to echo the number of each image it is processing like this:

Code:
Processing image1.jpg

The problem is with images with very long filenames, so I want to know how to limit the numer of characters of the output (maybe with sed or awk, but I prefer sed if it's possible).
I want to be able to turn this:

"Processing a-very-very-very-long-crazy-filename.jpg"

into this:

Code:
Processing a-very-very-ve...

It's important to say that this limitation will be done over a variable and not a file.
I came across this solution which seems to work but it is applied on a file and not on a variable, and I need it to be applied on a variable

I'm doing this as part of a progress bar solution. I want it to be like pacman progress bar when downloading packages to be updated except that I want it to inform each processed file and the operation percentage in one line. I already accomplished this, the only things remaining are the one I'm asking for, and the animation of the progress bar to make it look like the pacman one.

Thanks in advance. Shadow_Reaper

---------- Post updated at 11:57 PM ---------- Previous update was at 11:53 PM ----------

The image I posted was intended to show the url of the solution. I will post it through this reply so that it can be seen

[THIS WEBSITE]

/shell-programming

-and-scripting/241327-li

mit-string-length-sed [.HTML HERE]

The actual solution is the first reply but I need to be able to do this on a variable rather than a file.

Last edited by Don Cragun; 10-13-2014 at 12:01 AM.. Reason: Chane IMG tag to URL tag.
# 2  
Old 10-13-2014
Maybe a start using this:

Code:
jaysunn-> cat sub.sh 
#!/bin/bash
STRING1='a-very-very-very-long-crazy-filename.jpg'

for i in $STRING1
    do
        echo "PROCESSING:  ${i:0:14}..."
done

Produces:
Code:
jaysunn-> bash sub.sh 
PROCESSING:  a-very-very-ve...

Jaysunn

Last edited by jaysunn; 10-13-2014 at 12:27 AM.. Reason: Example shows loop, modify as needed
This User Gave Thanks to jaysunn For This Post:
# 3  
Old 10-13-2014
Using ksh (or bash) you could do this:

Code:
#!/bin/ksh
STRING1='a-very-very-very-long-crazy-filename.jpg'

if [ ${#STRING1} -gt 17 ]
then
   TRIM=${STRING1#??????????????}
   SHORT=${STRING1%$TRIM}...
else
   SHORT=$STRING1
fi
echo "PROCESSING:  $SHORT"

This User Gave Thanks to Chubler_XL For This Post:
# 4  
Old 10-13-2014
Or more simply, with any POSIX conforming shell (including bash and ksh):
Code:
#!/bin/ksh
for VAR in "a-very-very-very-long-crazy-filename.jpg" "short.jpg" "medium-length.txt"
do	if [ ${#VAR} -gt 17 ]
	then	printf 'Processing %.14s...\n' "$VAR"
	else	printf 'Processing %s\n' "$VAR"
	fi
done

which produces the output:
Code:
Processing a-very-very-ve...
Processing short.jpg
Processing medium-length.txt

These 3 Users Gave Thanks to Don Cragun For This Post:
# 5  
Old 10-13-2014
Thats nice, i've had a similiar challenge a little back, but i wanted to maintain the file extensions + extra space for the possible incremented file number as well.

So that was my solution this, just copy pasted from source code:
Code:
	string_line=$[ ${#tmp_if} + ${#tmp_of} + $tmp_border ]

	if [[ $string_line -gt $(tput cols) ]]
	then	tmp_if="${tmp_if:0:${#tmp_if}/4}...${tmp_if:(-6)}"
		tmp_of="${tmp_of:0:${#tmp_of}/4}...${tmp_of:(-6)}"
	fi

Hope this helps
This User Gave Thanks to sea For This Post:
# 6  
Old 10-13-2014
Thank you very much!! It's the easiest solution from those posted here, anyway thanks to everyone for answering and posting your solutions.
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

How to count number of characters of wc -l output?

I want count number of characters / find the length of the 'wc -l' output This is the command bash-3.2$ gzcat /home/sid/file1.dat |wc -l 830752 So final out I want is 6 i.e lenght of 830752 I tried with awk bash-3.2$ gzcat /home/sid/file1.dat |wc -l | awk '{print length ($0)... (3 Replies)
Discussion started by: sidnow
3 Replies

2. UNIX for Dummies Questions & Answers

Limit Number of files

hi guys how can i limit number of files in a disk or partition ? or how can i make a limit to inode number for a disk or partition ? ext3 or ext4 file system (1 Reply)
Discussion started by: mhs
1 Replies

3. UNIX for Dummies Questions & Answers

Limit reoccurrance of characters in lines

Hey guys and gals, Working on a script to limit the reoccurrance of characters in a line. sed "/\(.\).*\1/d" -i file.txt sed "/\(.\).*\1.*\1/d" -i file.txt sed "/\(.\).*\1.*\1.*1/d" -i file.txt .. To limit character reoccurance with 1x, 2x, 3x etc. However I would like to be able to... (2 Replies)
Discussion started by: TAPE
2 Replies

4. UNIX for Dummies Questions & Answers

Limit the number of characters in a bash output

I have a script that outputs the weather on two lines. If possibly I would like to set a character limit on them Currently it outputs something like but I would like to limit the lines so appends an ellipsis if nescessary: This is the script #! /bin/bash curl -s --connect-timeout... (2 Replies)
Discussion started by: Light_
2 Replies

5. Shell Programming and Scripting

Limit on Number of characters in a line - Vi editor

In the vi editor, there seems to be some limit on the number of characters could be allowed in single line. I tried a line with characters up to 1880. It worked. But when i tried with something of 5000 characters, it doesnt work. Any suggestions. Thanks in advance! (2 Replies)
Discussion started by: nram_krishna@ya
2 Replies

6. HP-UX

cron 80 characters limit

Hello everyone. I am trying to set up a monitor based on a "top" command statistic as follows: top -bc -n1 > output.txt I've put this command into a small script which is called by a cron... but there is something strange happening: the cron is limiting the output to output.txt to 80... (3 Replies)
Discussion started by: MartinF
3 Replies

7. Solaris

How to limit number of Commands

Is there a way that I can limit number of commands that one user can run during period of time. For example Max 10 commands per senconds.:) (3 Replies)
Discussion started by: winger0608
3 Replies

8. UNIX for Dummies Questions & Answers

Number of long limit

Hi Hi! I'm currently using AIX 5.2 and would like to know where can i find to see that there's a restriction on the number of login times a user can have. Example, I want give a 2 login per user but some one to give 3 login and some one have to give unlit login time (without logging off the... (2 Replies)
Discussion started by: herath
2 Replies

9. AIX

Is the Length of User ID for AIX Limit to 8 Characters?

Hi, I'm using AIX version 5.3 currently. I'm trying to create a user id, e.g. andyleong, which the system prompted the length is too long. 1. I would like to know is that the length of user id is limited to maximum 8 characters for AIX. 2. Is it apply to all versions of AIX? If no... (2 Replies)
Discussion started by: meihua_t
2 Replies

10. Shell Programming and Scripting

Limit of no of characters PER LINE in a unix file

Hi , Whats the limit of characters PER LINE in a unix file , allowed for editing..sort , cut , sed , awk etc (5 Replies)
Discussion started by: mohapatra
5 Replies
Login or Register to Ask a Question