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