سؤال

I am trying to print the values with awk , but it is modifying the result by removing the spaces in between fields. I am not getting how to maintain the spaces between fields.

echo "First Names       City     Names     ES"|awk '{$1=$2=$NF="";print $0}'|wc -c

the above statement while printing is removing the spaces between "City" and "Names" as a result the value of wc -c is getting impacted.

Please suggest how to maintain the spaces. My goal is to validate the length of the "City Names" value

I have one more doubt about wc -c output , it always gives 1+ to actual value i.e. if length is 11 it is giving 12.

هل كانت مفيدة؟

المحلول

Please suggest how to maintain the spaces.

Use a field separator:

$ echo "First Names       City     Names     ES"|awk -F'[ ]' '{$1=$2=$NF="";print $0}'
        City     Names     

I have one more doubt about wc -c output , it always gives 1+ to actual value

That's because of the newline. Instead of echo, you can say echo -n so as to disable the trailing newline.

$ echo | wc -c
1
$ echo -n | wc -c
0
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top