如何通过匹配列号找到行的内容?

时间:2011-11-14 16:16:58

标签: sed awk

我有一个包含姓名,地址和其他数据的平面文件。大多数行都有一个11位数字,从第299行开始,但有些是空白的。

我无法在特定字符串上匹配,因为我正在查找第299行到第309列(11个字符)为空的那些行,即空白。

我怎样才能在Unix中执行此操作?这是使用sed做的事情还是我应该使用AWK?

3 个答案:

答案 0 :(得分:2)

尝试:

awk '{if (substr($0,299,11)=="")print $0}' file

答案 1 :(得分:2)

你可以做到

awk 'substr($0, 99, 11) == sprintf("%*s", 11, " ")' input.txt

将从位置99打印11个字符的空白行。

答案 2 :(得分:1)

这可能对您有用:

<input_file sed -e '/^.\{98\} \{11\}/!d;=' | sed -e '1~2!d'

这将打印来自input_file的行的行号,其中第99行包含11个空格 如果其来自第299行,则将\{98\}更改为\{298\}