【发布时间】:2014-05-04 06:17:43
【问题描述】:
如题,sed 如何执行“大于”删除特定行?
我有一个这样的文件:
bash-4.2$ cat testfile.txt
string1 1 1
AAA 2 2
string2 2 2
BBB 3 3
string3 3 3
string4 4 4
string5 5 5
string6 6 6
CCC 6 6
string7 7 7
string8 8 8
string9 9 9
string10 10 10
DDD 11 11
string11 11 11
string12 12 12
string13 13 13
我想删除一些包含 "string[[:digit:]]" 但 string1 到 string"$num" 的行,num 由变量定义。例如,我想保留那些包含 string1-5 并删除 string6-string99 的行,我试过了:
#!/bin/bash
read -p "Please Assign the Number of String Line that You Wanna Keep: " num
cat testfile.txt | sed -e "/string[`expr $num + 1`-9]/d" > new_testfile.txt
但它只在 0-8 范围内工作,有没有办法用 sed 或 awk 来执行它?
【问题讨论】:
-
需要用 sed 做吗?
-
stringxx总是排在第一个字吗? -
是的,总是第一个字