1, check the file under a certain path.
Search for "*.log" files under/etc
Find/etc-name "*.log"
2, expand, List all files under a path, including subdirectories.
Find/etc-name "*"
3. Look for all files that contain the "Hello Abcserver" string under a path.
Find/etc-name "*" | Xargs grep "Hello abcserver"
or find/etc-name "*" | Xargs grep "Hello abcserver" >./cqtest.txt
4, the online excerpt of a few and find files or file content related to the order detailed said:
Regular expressions
\ Indicates the start and end of a word, respectively
Ex: A word that begins with T or T and the OM ends
Meta-character set for regular expressions:
1) ^ line beginning/^love/with Love;
2) $ line End/love$/The line ending with love;
3). /L.. e/matches all such lines, and the letter L is followed by any two characters followed by the line of E
4) * Repeat 0 times or any number of preceding characters
5) [x-y] character range
6) [^x-y] exclude character range
7) \ Escape character
8) \ Define the beginning and end of a word
9) \ (\) tag followed by matching character \ (love\) able \1er=loveable Lover
X\{m,n\} Repeat character x at least m this, up to n times
—————————————————————————
—————————————————————————
grep family
Re–regular expression; G:global; P:print
Out of the above 10 meta character sets, grep also supports the following re
\w letters or numbers
\w non-word characters (punctuation)
+ Repeat one or more of the preceding characters
| or Love (A:B) means Lovea or lobeb
? Single character
grep returns the status value ($?) 0 for success, 1 for failure, 2 for no file found
Rgrep recursive access to the directory tree
—————————————————————————
Ls-l |grep ^d Display Directory
Grep-n-V-#-a#-b#
-I is case insensitive
-N Displays matching rows and line numbers
-V Displays unmatched rows only
-#显示匹配行上下 # line
-a# line after matching line
-b# matching lines before printing # lines
-C outputs only the number of rows matching rows
-H does not display matching file names when querying multiple files
-L Query Multiple files display only matching filenames
-S does not display error messages
grep is used in conjunction with regular expressions
grep "^[^ABC]" *.F fetch lines that are not ABC
grep "[0-9]\{3\}[8]" *.f extracts rows similar to xxx8, X represents any number
grep "A\{2\}" *.f shows a line that appears at least two times, note that grep is a line-handling unit of
Grep-n "^$" file lists line numbers for empty rows
-e parameter, you can use the and and or mode
GREP-E "ABC | def "*.F displays lines that contain ABC or DEF
Ex
Ls-l | grep "^$" Display directory
Ls-l | grep "^d" Display file
Ls-l | grep "^d. X.. X.. X "Show directories with specific permissions
PS aux | grep "httpd" |grep-v "grep"
—————————————————————————
—————————————————————————
* * Use Find and Xargs
1. Find Pathname-options [-print-exec-ok]
-optinos
1)-name: Search by file name
Find ~-name "*.txt"-print
Find ~-name "[A-z][0-9].txt"-print
2)-perm: Find Files by permissions
Find ~-perm 755-print look for files with permission 755
Find ~-perm 007-print look for files with 7 permissions on position O
Find ~-perm 4000-print looking for files with suid
3)-prune
Do not look in the current directory
4)-user and-nouser
Find ~-user Zhao-print Lookup file owner is Zhao file
Find ~-nouser-print file owner has been deleted
5)-group and-nogroup
Find ~-group zhao-print Locate file groups are Zhao files
6) by Time
Find ~-mtime-5-print file changed within 5 days of file
Find ~-mtime +3-print file changed 3 days ago
Find ~-newer file1-print finding a new file than file File1
7) Search by type
Find ~-type d-print finding all directories
8) by size
Find ~-size +1000000c-print finding files with file sizes larger than 1000000 bytes (1M)
9) Find files located in this file system
Find/-name "*.txt"-mount-print
The-exec,-ok:find command executes the shell command for the matching file, with the command form: ' command ' {} \;
-ok to confirm before executing the command
Find ~-type f-exec ls-l {} \;
Find/-name "*.log"-mtime +5-ok rm {} \;
Find. -name core-exec rm {} \;
Using the-x dev parameter
Prevent find from searching for other partitions
Find. -size 0-exec rm {} \;
Delete a file with a size of 0
2. Xargs is similar to-exec function
Find ~-type F | Xargs ls-l
Find/-name "*.log"-type f-print| Xargs grep-i DB0
Find. -type f |xargs grep-i "Mary"
Retrieving a string in all files Mary
LS *~ |xargs RM-RF
Delete all files ending with ~
—————————————————————————
—————————————————————————
Sed:
=====
sed [options] sedcommand inputfile >outputfile
SED does not touch the initial input file, do not modify it, if you want to save changes, it is important to redirect the output to a file
A\: Adds a line or text after the current line
C\: Replacing our text with a letter text
D: Delete a row
D: Delete the first line of the template block
I\: Inserting text above the current line
H: Copy the contents of the template block to the memory buffer
H: Append the contents of the template block to the memory buffer
G: Get the contents of the memory buffer and replace the text in the current template
G: Get the contents of the memory buffer and append to the text in the current module section
N: Reads the next input line and processes the new line with the next command instead of the first command
N: Append the next input line to the module section and insert a new line between the two to change the number of the current row
P: Print the line of the template block
P: Plot a row of template blocks
Q: Exit SED
R file: Read rows from File
!: indicates that the following command works on all rows that are not selected
s/re/strint/: Replacing regular expression re with string
=: Print the current line number
#command: Extend annotations before the next line break symbol
l Print matching lines, including display control symbols
* * Replacement Tag
G: All in-line replacement
P: Print Line
W: Write a line to a file
x: Swap the text in the die plate and buffer
Y: Translate a character into another character
**sed can use all the characters in the regular expression
New addition:
& Save Search characters s/love/**&**/replace love with **love**
**sed How to position text
X line number
XY from X to Y line
/patern/query includes rows for Patern
x,y! Does not include lines that specify X-y line numbers
Ex
Sed '/tom/d ' file
Delete the row that contains Tom;
Sed '/tom/!d ' file
Delete all rows that do not contain Tom;
Sed-n/north/p ' file
Print a line containing north;
Sed ' 3d ' file
Delete the third row;
Sed ' 3, $d ' file
Delete the third row to the last row;
Sed ' $d ' file
Delete the last line;
Sed '/north/d ' file
Delete the row containing north;
Sed-n ' s/west/north/g ' file
Replace all west for north;
Sed-n ' s/^west/north/p ' file
West at the beginning of a line is replaced with North, and the line where the substitution occurs is printed;
Sed ' s/[0-9][0-9]$/&.5/' file
All lines that end with two digits, and the last two digits are replaced by themselves and appended. 5;
Sed-n ' s/\ (mar\) got/\1ianne/p ' file
Replace Margot with Marianne and print the line where the substitution occurred;
Sed ' s#abc#abc#g ' file
All ABC is replaced by ABC (all characters immediately following the s are considered new separators);
Sed '/west/,/east/p ' file
Prints all rows containing the West row and the middle of the East Line;
Sed ' 1,/east/s/$/**a**/' file
The line end of the row and all rows containing the East line are prefixed with the string **a**;
Sed-e ' 1,3d '-e ' s/aa/bb/' file
Delete 1 to 3 lines first, then replace AA with BB;
Sed '/sam/r file1′file
Append the contents of the file File1 to the line containing the SAM;
Sed '/sam/w file1′file
There will also be a Sam row written to the file file1;
Sed '/^north/a\new line second line ' file
All lines beginning with a North plus space are appended with two lines of text, a\ for append text, \ for newline (required in tcsh, not required in bash);
Sed '/^north/i\new line ' file
Inserts a new row in front of the line at the beginning of the row;
Sed '/norht/{n; s/aa/bb/;} ' file
First match the row containing north, then execute a set of commands, n means move to the next line, and BB instead of AA;
Sed ' 1,3g/abcdefghijklmnopqrstuvwxyz/abcdefghijklmnopqrstuvwxyz/' file
Replace all lowercase letters in rows 1 through 3 with capital letters;
Sed '/lewis/{s/lewis/bbb;q;} ' file
First find the line matching Lewis, then use BBB instead of Lewis, then Q exit seq;
Sed-e '/north/h '-e ' $G ' file
First find the row containing the Norht, H copy to the memory buffer, then to the file followed by a line ($), G appended to the last line;
Sed-e '/we/{h;d;} '-E '/ct/{g:} ' File
Locate the line that contains we, copy and delete it, and then locate the line that contains the CT, attaching the copy to the back of him;
Sed-e '/north/h '-e ' $g ' file
First find the line containing the Norht, H copy to the memory buffer, then to the file followed by a row and overwrite him;
Sed-n ' l ' file
Prints all lines that contain characters that cannot be printed.
Sed-n '/.*ing/p ' file
Displays lines containing the words ending in ing;
Sed-n '/music/= ' file
Print the line number containing the music;
Sed ' ^ $d ' file
Delete empty lines
Sed ' s/^/abcd/g ' file
Add ABCD at the beginning of the line
Sed ' s/$/abcd/g ' file
Add ABCD at the end of the line
Sed ' s/rm$/played &/g ' file
& means to retain the replaced word at the time of substitution (rm–played RM)
Sed ' s/^m//g ' file
Remove the ^m at the end of the line (^m input, press CTRL + V and press Enter)
—————————————————————————
—————————————————————————
Gawk Program:
awk [-F Domain delimiter] ' commands ' inputfile
When Awk executes, its domain identifier is $1,$2,$3 ... $n, and $ A indicates all domains
Awk-v var=value assignment to a user-defined variable
awk ' pattern ' file
awk ' {action} ' file
awk ' Pattern {action} ' file
Ex
awk ' {print $} ' file
Print all the fields
awk '/mary/' file
Prints the row containing Mary in file;
awk ' {print $} ' file
Print the first column of a file (first field);
awk '/mary/{print $1,$2} ' file
Print a file containing the first and second fields of Mary's line;
DF | awk ' s4>75000′
Print file systems with free space greater than 75000
Date | awk ' {print ' month: ", $," \ n year: "$6} '
Formats the output of the date;
awk ' begin{ofmt= '%.2f "; print 1.25463} '
Specifies the digital output format, which retains a two-bit valid number (1.25) after the decimal point;
awk '/[ab]cdef/' file
Print lines that match acdef or bcdef;
awk ' {print NR, $} ' file
awk ' {print $, NR} ' file
NR current record number, one record per processing NR adds 1
The above command is equivalent to adding a line number after each line;
NF records the number of fields in each row;
Awk-f ' [: \ t] ' {print $} ' file
Specifies that the field delimiter is a space,: or Tab
awk '/^[a-z][a-z]+/' file
Print all lines that begin with an uppercase letter, followed by one or more lowercase letters;
awk ' $1~/[bb]ill/' file
The first field matches the line of Bill or bill;
awk ' $1!~/ly$/' file
The end of the first field is not a line of ly;
awk '/^ (no|no)/' File
Print lines with no or no at the beginning of the line;
awk ' BEGIN {print ' file head \ n '} {print $ \ $4} ' file
awk ' BEGIN {print ' file head \ n '} {print $ \ $4} ' file |tee out.file
Attach a file header when printing a file
awk ' BEGIN {print ' file head \ n '} {print $ \ $4} end {print ' End of file '} ' file
Attach a file header and end of file when printing a file
Using regular expressions in awk
awk ' {if ($1~/hello/) print $} ' file
If you have hello in domain 1, print all the fields
~//indicates a matching regular expression, and!~//indicates a mismatched regular expression
awk ' {if ($6,>=,==,!=,~,!~ (matching, mismatch)
awk ' $3==5346′file
The third field is equal to 5346, and the line is printed out;
awk ' $3>5000 {print $} ' file
The third field is greater than 5000 to print the first field of the row
awk ' {max={$1>$2}?$1:$2; print max} ' file
If the first domain is greater than the second domain, max=$1 otherwise =$2, print the maximum value
awk ' {print ($1==11? ") High\t "$:" Low\t "$)} ' file
&& logic and, | | Logical OR,! Logical non-
awk ' $2==$5 && $3>5′file
awk '/tom/,/jary/' file
Tom first appears and jary the first appearance between all rows;
awk '/north/{print $3+10} ' file
Three fields with North Row plus 10;
awk ' $3== ' AA ' {$2= ' dd '; print $} ' file
Converts the second field of a row of three fields to AA into DD and prints the row;
**awk Programming:
Using variables
awk ' $1~/tom/{wage=$2+$3; print wage} ' file
First, if you match Tom, the sum of the second and third fields is assigned to the variable wage and output;
awk ' begin{fs= ': "; Ofs= "\ t"; ors= "\ n"}{print} ' file
Pre-processing File settings
The domain delimiter (FS) is (:)
Output domain delimited (OFS) is (\ t)
The output record delimiter (ORS) is (\ n)
awk ' End{print ' The number of record is: ' NR} ' file
Execute END statement after processing the file
Total number of output records
awk '/mary/{count++} end{print "Mary was found" count "Times"} ' file
The number of times Mary appears in the Count file;
**awk Input/Output redirection
awk ' $4>=70 {print $, $ > ' outfile '} ' file
Results redirected to file outfile
awk ' begin{' date "|getline D; print d} '
Lose the date result to the Getline function and print
(getline input from standard output, piping, etc.)
awk ' begin{' date ' |getline D; split (D,mon); print mon[1] mon[2]} '
The date result is lost to the Getline function, Slpit D is decomposed into an array, and the 2nd variable is printed.
**split function: Split (String,array,field seperator)
awk ' begin{while ("ls" |getline) print} '
Output LS for each item in turn
Awk
' Begin{print ' What's your name? "; getline name 0) {lc++; print LC" "A}} '
awk ' Begin{while (getline a 0) {lc++; print LC}} '
If the file does not exist, Getline returns-1
Reach end of File return 0
Read a row to return 1
Read the file/etc/passwd, count the number of rows
**awk Control Statements
If statement:
awk ' {if ($6>50) print ' Too high '} ' file
awk ' {if ($6>20 && $250}{x++; print X} else {y++;p rint y} ' file
awk ' {if ($1~/peter/) {next} else {print}} ' file
If the first field contains Peter,awk, the line is ignored, the next line of the file is read, and the script executes from the beginning;
Loop statement:
awk ' {i=1; while (i file
Cat-v file display, including the control (-V)
Cat-n file is numbered per line
Cat-b file each non-empty line number
Cat-t file Displays tab in ^i
3.
Pipeline | Pass the output of one command to another command for input
Ex
ls | grep File.doc
Find Files File.doc
W.H.O. | awk ' {print ' \ t ' $ ' $ ' only display user name and terminal
df-h | awk ' {print '} ' |grep-v ' filesystem ' (-v means the output does not include filesystem items)
df-h | awk ' {print '} ' |grep-v ' filesystem ' |sed ' s/\/dev\///g ' displays the device without/dev/
4.tee
W.H.O. | Tee who.txt output to the screen while outputting to a file
W.H.O. | Tee-a Who.txt attached to the back of the file
5. File redirection
Ls-l |grep ^d >file.out all directory names redirect to a file
cat/etc/passwd | Awk-f: ' {print '} ' |sort >a.out (-f: Specified delimiter is:)
Cat >file.out reboot
At> Ctrl+d
Reboot after 3 hours
3.
C – Calculator
Scale=3 sets the number after the decimal point
ibase=2 binary Operations
4.
ls-d dir
Displays only the directory and does not display the files below it.
5.
Sync
Update Superblock and write it to the hard drive
6.
Scp[email protected]:/path/file1[email protected]:/path/file
Copy files between servers
http://sundful.iteye.com/blog/1730385
Find files and file contents using Find Xargs grep under Linux