歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> 關於Linux >> Sed - Delete one or more lines from a file

Sed - Delete one or more lines from a file

日期:2017/3/1 14:02:40   编辑:關於Linux
Sed - Delete one or more lines from a file
Syntax: C代碼 sed '{[/]<n>|<string>|<regex>[/]}d' <fileName> sed '{[/]<adr1>[,<adr2>][/]d' <fileName> /.../=delimiters n = line number string = string found in in line regex = regular expression corresponding to the searched pattern addr = address of a line (number or pattern ) d = delete Examples Remove the 3rd line: C代碼 sed '3d' fileName.txt Remove the line containing the string "awk": C代碼 sed '/awk/d' filename.txt Remove the last line: C代碼 sed '$d' filename.txt Remove all empty lines: C代碼 sed '/^$/d' filename.txt sed '/./!d' filename.txt Remove the line matching by a regular expression (by eliminating one containing digital characters, at least 1 digit, located at the end of the line): C代碼 sed '/[0-9/][0-9]*$/d' filename.txt Remove the interval between lines 7 and 9: C代碼 sed '7,9d' filename.txt The same operation as above but replacing the address with parameters: C代碼 sed '/-Start/,/-End/d' filename.txt The above examples are only changed at the display of the file (stdout1= screen). For permanent changes to the old versions (<4) use a temporary file for GNU sed using the "-i[suffix]": C代碼 sed -i".bak" '3d' filename.txt Task: Remove blank lines using sed Type the following command: C代碼 $ sed '/^$/d' input.txt > output.txt Task: Remove blank lines using grep C代碼 $ grep -v '^$' input.txt > output.txt Both grep and sed use special pattern ^$ that matchs the blank lines. Grep -v option means print all lines except blank line. Let us say directory /home/me/data/*.txt has all text file. Use following for loop (shell script) to remove all blank lines from all files stored in /home/me/data directory: C代碼 #!/bin/sh files="/home/me/data/*.txt" for i in $files do sed '/^$/d' $i > $i.out mv $i.out $i done Updated for accuracy.
Copyright © Linux教程網 All Rights Reserved