Visit Our UNIX and Linux User Community


Grep Command Help


 
Thread Tools Search this Thread
Top Forums UNIX for Beginners Questions & Answers Grep Command Help
# 1  
Old 03-12-2020
Grep Command Help

Hello Unix Forum,


I am trying to create an bash script to expand a LVM disk, I mean, trying to automatize all the process from the video bellow:
Youtube search:



How To Extend LVM Disk For Linux Virtual Machine On VMware



At this point, I am very new in bash script and I am facing this just as a try, I don't know if I will get the final result that I need.


Well, I am stuck at the grep option bellow:


Code:
#!/bin/bash
# Increase LVM Disk
echo"$(fdisk -l)"
echo Which disk you want to increase the size? "(Please provide the full path, Example: /dev/sda2):"
read disk1
diskcompare="$(fdisk -l | grep "$disk1 " -o --max-count=1)"
if [ "$diskcompare" ==  "$disk1 " ]; then
echo"Valid Disk."
else
echo"Invalid Disk."
fi

I would like to compare the path (disk1) with the fdisk -l command to check if it is a valid disk.


The problem is that the way that it is writed at the moment it accept you to continue the script if you not type the entire path, example:
Code:
[root@linuxtest ~]# ./test.sh

Disk /dev/sda: 16.1 GB, 16106127360 bytes, 31457280 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0x000d345c

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *        2048     2099199     1048576   83  Linux
/dev/sda2         2099200    16777215     7339008   8e  Linux LVM
/dev/sda3        16777216    31457279     7340032   8e  Linux LVM

Disk /dev/mapper/centos-root: 14.2 GB, 14164164608 bytes, 27664384 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes


Disk /dev/mapper/centos-swap: 859 MB, 859832320 bytes, 1679360 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Which disk you want to increase the size? (Please provide the full path, Example: /dev/sda2):
/sda2
Valid Disk.
[root@linuxtest ~]#

It should match only the exactly values /dev/sda1 , /dev/sda2 or /dev/sda3.


Any help will be welcomed Smilie


Ty!

Last edited by Scrutinizer; 03-12-2020 at 10:14 AM.. Reason: quote tags -> code tags; Removed non-existing-font definition; Removed multi-color
# 2  
Old 03-12-2020
Hi, try:
Code:
grep "^${disk1} " -o --max-count=1

This User Gave Thanks to Scrutinizer For This Post:
# 3  
Old 03-12-2020
It worked, can you explain a little bit why?


Regards,
# 4  
Old 03-12-2020
how about a little bit more "interesting" - with the menu:
Code:
#!/bin/bash

menu=$(fdisk -l | awk '/Device Boot/ {for(i=2;i<=NF;i++) print substr($i,1, index($i, " ")-1)}' RS= FS='\n';echo 'quit')

PS3='Which disk you want to increase the size?'

     select choice in ${menu}
     do
     case "$choice" in
          "")
               echo "You selected a non-existing item"
               ;;

          "quit")
               echo "You are leaving the loop"
               break
               ;;

          *)
               echo "You selected $choice"
               ;;
          esac

     done

This User Gave Thanks to vgersh99 For This Post:
# 5  
Old 03-12-2020
wow, I really liked the menu, trying to undestand the lines and how you done that!


Ty!
# 6  
Old 03-12-2020
Quote:
Originally Posted by DanilOnTheSky
It worked, can you explain a little bit why?


Regards,
The caret sign (^)means that the expression only matches text at the beginning of the line.
There already had be a space at the end.
These two measures make that a partial match will not work.

Previous Thread | Next Thread
Test Your Knowledge in Computers #586
Difficulty: Medium
Making many function calls can be costly in terms of stack space. One optimization that can be made is to use tail recursion.
True or False?

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Grep command giving different result for different users for same command

Hello, I am running below command as root user #nodetool cfstats tests | grep "Memtable switch count" Memtable switch count: 12 Where as when I try to run same command as another user it gives different result. #su -l zabbix -s /bin/bash -c "nodetool cfstats tests | grep "Memtable switch... (10 Replies)
Discussion started by: Pushpraj
10 Replies

2. Shell Programming and Scripting

Grep Command

I have one text file, contains some values like <Q1:Name>1000000</Q1:Name>. I want to read the values and stores into an array for searching the each values into a file locations. If I use this find location |xargs grep -l "<Q1:Location>100000055042</Q1:Location>",I get the files, are having... (7 Replies)
Discussion started by: arindam guha
7 Replies

3. Shell Programming and Scripting

Help with using grep command with copy command

Hi, im taking an entry Unix class, and as part of my lab assignment I have to copy all files in the /home/david/lab3 directory that have the file extension .save to your lab3/temp directory. I'm having trouble getting the grep to do anything worth while I've been trying to do: cp... (6 Replies)
Discussion started by: Critical jeff
6 Replies

4. Shell Programming and Scripting

can anyone help with shell script command about searching word with grep command?

i want to search in the current directory all the files that contain one word for example "hello" i want to achieve it with the grep command but not with the grep * (2 Replies)
Discussion started by: aintour
2 Replies

5. UNIX for Dummies Questions & Answers

Need help with grep command

Hi guys, i wondering with any1 could help me with this. I have this script will i need to "grep" an integer form a file x2. If the value is 0 then it's ok. But anything greater then 0, i'll ask the script to echo an error message. This is how the script looks like: MESSAGEFILE=x2 STRING="0" ... (5 Replies)
Discussion started by: hanyou.lin
5 Replies

6. UNIX for Dummies Questions & Answers

GREP Command

Hi, I am new to UNIX environment, to find a contents from a given files i have used the command "grep -l "<search word>" *.txt, it is given the file names which contains that particular word, but it is anyway to get entire details of the file .., i need the output like ls -ltr, filename... (3 Replies)
Discussion started by: subrahmaniank
3 Replies

7. UNIX for Advanced & Expert Users

how to use grep command

In my file contains special characters,alphanumerics all thease characters how to search the pattern between two strings that contains special characters Ex: find pattern between allocation_map_128*2 to creative.clicks_allocate != KNULL so there are special characters in my... (1 Reply)
Discussion started by: ksr.test
1 Replies

8. UNIX for Advanced & Expert Users

How to use grep command

I want to search pattern in between two words in a file so how to write query by using grep command?? Also want to get two words.. (2 Replies)
Discussion started by: ksr.test
2 Replies

9. UNIX for Advanced & Expert Users

how to exclude the GREP command from GREP

I am doing "ps -f" to see my process. but I get lines that one of it represents the ps command itself. I want to grep it out using -v flag, but than I get another process that belongs to the GREP itself : I would like to exclude # ps -f UID PID PPID C STIME TTY TIME CMD... (2 Replies)
Discussion started by: yamsin789
2 Replies

10. Shell Programming and Scripting

grep command

I want to list all files created in a day but it doesn't work $ day=\'`date "+%b %d"`\' $ echo $day >>> 'Mar 12' $ ll |grep $day >>> can't open 12' ????? please help me (3 Replies)
Discussion started by: Medhi
3 Replies

Featured Tech Videos