Cut command on RHEL 6.8 compatibility issues


Login or Register to Reply

 
Thread Tools Search this Thread
# 1  
Cut command on RHEL 6.8 compatibility issues

We have a lot of scripts using cut as :
cut -c 0-8 --works for cut (GNU coreutils) 5.97, but does not work for cut (GNU coreutils) 8.4.
Gives error -
Code:
cut: fields and positions are numbered from 1
Try `cut --help' for more information.

The position needs to start with 1 for later version of cut and this is causing an issue.

Is there a way where I can have multiple cut versions installed and use the older version of cut for the user which runs the script?

or any other work around without having to change the scripts?

Thanks.

Last edited by RudiC; 06-30-2016 at 04:53 AM.. Reason: Added code tags.
# 2  
What are you trying to do when you invoke
Code:
cut -c 0-8

with your old version of cut?

With that old version of cut, is there any difference in the output produced by the two pipelines:
Code:
echo 0123456789abcdef | cut -c 0-8

and:
Code:
echo 0123456789abcdef | cut -c 1-8

or do they produce the same output?
# 3  
I am trying to get a value from the 1st line of the file and check if that value is a valid date or not.
------------------------------------------------------------------
Below is the output for the cut command from new version
Code:
 $ echo 0123456789abcdef | cut -c 0-8
cut: fields and positions are numbered from 1
Try `cut --help' for more information.
$ echo 0123456789abcdef | cut -c 1-8
01234567

-------------------------------------------------------------------
With old version, both have same results:
Code:
$ echo 0123456789abcdef | cut -c 0-8
01234567
$ echo 0123456789abcdef | cut -c 1-8
01234567


Moderator's Comments:
Mod Comment
Please wrap all code, files, input & output/errors in CODE tags
It makes them far easier to read and preserves spaces for indenting or fixed-width data.

Last edited by rbatte1; 06-30-2016 at 11:38 AM.. Reason: Code tags
# 4  
The use of 0 is not according to specification. Alternatively, you can just omit it, which should work across versions
Code:
$ echo 0123456789abcdef | cut -c -8
01234567

If you cannot adjust the scripts, you could perhaps create a wrapper script for cut, so that the 0 gets stripped..

Last edited by Scrutinizer; 07-02-2016 at 02:28 AM..
This User Gave Thanks to Scrutinizer For This Post:
# 5  
Yes, don't want to adjust my scripts.
Wrapper for cut looks like something that would work.

could you please tell me how would I use it, as in, how would I make sure that the wrapper is called and not the cut command which causes the issue.
# 6  
The only way to make sure that your wrapper is always called instead of the OS supplied utility is to move the OS supplied utility to a different location and install your wrapper in the location where your OS installed cut originally.

Of course, once you have installed this wrapper, your code might or might not work properly (depending on the quality of your wrapper) and no one else on your system will be able to look at the diagnostics produced by scripts that have bugs in the way they specify field and character ranges so they can identify and fix their code.

My personal opinion is that you should spend time fixing your scripts that call cut -c 0...., cut -f 0..., and lots of other possible misuses of 0 that are now correctly diagnosed as errors by the new version of cut instead of debugging code to be sure that it changes all of the appropriate 0 characters in its argument list to 1 characters and doesn't change any 0 characters that are correctly specified and do not reference a character 0 or field 0.
These 2 Users Gave Thanks to Don Cragun For This Post:
# 7  
An update of "cut" will overwrite your wrapper.
Much better: change your scripts. Run the following fix_cut script on your scripts:
Code:
#!/bin/sh
# fix_cut
PATH=/bin:/usr/bin
PRE="\b(cut\s+(-\S*\s+)*-[cf]\s*0*)0-"
for arg
do
  perl -ne 'exit 1 if m/'"$PRE"'/' "$arg" || {
    perl -i -pe 's/'"$PRE"'/${1}1-/g' "$arg"
  }
done

Example: fix all .sh scripts
Code:
fix_cut *.sh

This User Gave Thanks to MadeInGermany For This Post:
Login or Register to Reply

|
Thread Tools Search this Thread
Search this Thread:
Advanced Search

More UNIX and Linux Forum Topics You Might Find Helpful
RHEL 7 distribution compatibility
chaosvn
Hi all, I'm new here. I am currently using RHEL 6.10 and transitioning to RHEL 7 soon. Some of my GUI developments are developed using Glade v2.6.8. My question is: Is Glade v2.6.8 compatible with RHEL 7? Do I need to install additional libraries or dependencies? I looked up the list of...... Red Hat
1
Red Hat
Compatibility issues between Sun solaries & AIX commands.
46019
Hi, I am migrating few of the shell scripts from existing SUN Solaries to AIX. My script contains some command like 'dos2unix' and 'unix2dos' which are not compatible in AIX flavour. Please let me know if there is any such commands in AIX which can replace these commands. Thanks.... Shell Programming and Scripting
1
Shell Programming and Scripting
sed & cut command issues
robrom78
Use and complete the template provided. The entire template must be completed. If you don't, your post may be deleted! 1. The problem statement, all variables and given/known data: After using the egrep command to pull certain lines from the asg5f1 (creating the asg5f1c file), I am required...... Homework & Coursework Questions
1
Homework & Coursework Questions
having issues in using Cut Command
paoie
Hi, I would like to ask for your help with my problem, im writing a unix script to remove characters before the symbol "/", but the one being removed are characters after the symbol. Ive searched over the internet and found no answer.. hope you can help me with this. sample: text...... UNIX for Dummies Questions & Answers
2
UNIX for Dummies Questions & Answers