0

我想从包含确切字符数的文本文件中提取行。我尝试了 colrm 但它没有达到我想要的结果并且排除了非字母数字符号。任何人都可以使用 sed 来做到这一点吗?我是 sed 的新手,但我仍在阅读……感谢您的任何建议。

4

2 回答 2

1

这是一个运行它的测试文件,我称该文件为“test”:

1
11
123
1234
12345
55555
123456
666666

grep

要仅打印 5 个字符的行,请使用以下命令

cat test | grep '^.\{5\}$'

结果:

12345
55555

在命令行上,您需要转义大括号,

sed

cat test | sed '/^.\{5\}$/!d'

在 sed 中,它使用与上面相同的正则表达式,但/!d告诉 sed 不要删除与此匹配的行。结果将与上面的两行相同。

awk

花括号可能会导致某些版本的 awk 出现问题,并且可能需要不可用的特殊标志。这是使用 awk 的一种基本方法

cat test |  awk '{ if (length($0) == 5 ) print $0}'
于 2013-03-08T04:37:40.727 回答
0

grep '^.{25}$'我认为只会返回正好有 25 个字符的行。

解释:

^     Start at beginning of string
.{25} match exactly 25 of any character
$     Up to the end of the string`
于 2013-03-08T04:20:51.447 回答