Linux command: VI global substitution method
The syntax is: [addr]s/source string/destination string/[option]
The Global Substitution command is::%s/source string/destination string/g
[Addr]: Indicates the scope of the search, omitting the current line.
such as: "1,20": means from line 1th to 20;
"%": indicates the entire document, with "1,$";
"., $": from the current line to the end of the file;
S: Represents the Replace operation
[option]: Indicates the type of action
such as: g means global substitution;
C means to confirm
P indicates that the substitution results are displayed line by row (Ctrl + L recovery screen);
When option is omitted, only the first matching string of each row is replaced;
If special characters appear in the source string and the destination string, you need to escape with "\"
1. Basic replacement
: s/vivian/sky/replaces the current line the first Vivian is sky
: S/vivian/sky/g replaces the current line all Vivian are sky
: N, $s/vivian/sky/replaces the first Vivian of each row in the nth row to the last row is sky
: N, $s/vivian/sky/g replace the nth line to the last row all Vivian are sky
(n is a number, if N is., representing the beginning of the current line to the last row)
:%s/vivian/sky/(equivalent to: g/vivian/s//sky/) replaces the first Vivian of each line as Sky
:%s/vivian/sky/g (equivalent to: g/vivian/s//sky/g) replaces all Vivian in each row as Sky
2. You can use # as a delimiter, at which time the middle appears/does not act as a delimiter
: s#vivian/#sky/# Replace the current row the first vivian/is sky/
:%s+/oradata/apras/+/user01/apras1+ (use + to replace/):/oradata/apras/Replace with/user01/apras1/
3. Delete the ^m in the text
Problem description: For line breaks, the window is replaced with a carriage return (0a0d) to indicate that Linux is a carriage return (0A) to represent. That way, when you copy a file on a window to UNIX, there's always a ^m, write a shell or C program that uses a newline character (0D) that filters Windows files under UNIX.
Using the command: Cat filename1 | tr-d "^v^m" > NewFile;
Use command: sed-e "s/^v^m//" filename > OutputFileName
It is important to note that in 1, 22 methods, ^v and ^m refer to Ctrl + V and ctrl+m. You have to do the input manually, not paste it.
Process in VI: First use VI to open the file, then press ESC, then enter the command:
:%s/^v^m//
:%s/^m$//g
If the above method is useless, the correct solution is:
Tr-d "\ r" < src >dest
Tr-d "\015〃dest
Strings A>b
4. Other uses
Use the: s command to implement a string substitution. Specific uses include:
: s/str1/str2/replaces the first occurrence of a string in a line with a string str2 str1
: S/str1/str2/g replaces all occurrences of strings in a line with a string str2 str1
:., $ s/str1/str2/g Replace all occurrences of the current line to the end of the string with the string str2 str1
: 1,$ s/str1/str2/g replaces all occurrences of strings in the body with a string str2 str1
: g/str1/s//str2/g function Ibid.
As you can see from the Replace command above, G is placed at the end of the command to replace each occurrence of the search string, without G, to replace only the first occurrence of the search string, and g at the beginning of the command to replace all rows in the body that contain the search string.