Visit The New, Modern Unix Linux Community


Grep Command Help


 
Thread Tools Search this Thread
Top Forums UNIX for Beginners Questions & Answers Grep Command Help
# 1  
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 09:14 AM.. Reason: quote tags -> code tags; Removed non-existing-font definition; Removed multi-color
# 2  
Hi, try:
Code:
grep "^${disk1} " -o --max-count=1

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


Regards,
# 4  
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  
wow, I really liked the menu, trying to undestand the lines and how you done that!


Ty!
# 6  
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
Thread Tools Search this Thread
Search this Thread:
Advanced Search

Test Your Knowledge in Computers #285
Difficulty: Easy
AIX was the first operating system to have a proc file system.
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