Sed 如何通过匹配列号来查找行的内容?

Sed 如何通过匹配列号来查找行的内容?,sed,awk,Sed,Awk,我有一个包含姓名、地址和其他数据的平面文件。大多数行都有一个从第299列开始的11位数字,但有些是空白的 我无法匹配特定字符串,因为我正在查找第299列到第309列(11个字符)为空的行,即空白 在Unix中如何执行此操作?这是使用sed做的还是应该使用AWK做的?试试: awk '{if (substr($0,299,11)=="")print $0}' file 尝试: 你能行 awk 'substr($0, 99, 11) == sprintf("%*s", 11, " ")' inpu

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

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

在Unix中如何执行此操作?这是使用sed做的还是应该使用AWK做的?

试试:

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

你能行

awk 'substr($0, 99, 11) == sprintf("%*s", 11, " ")' input.txt
将打印从位置99开始的11个字符的带空格的所有行。

您可以这样做

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

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

这可能适用于您:

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

这可能适合您:

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

您能提供示例文件和所需输出吗?
123 John Doe 9999纽约州帕克大街NY 10016 123456789
124 Jane Doe 14685 Sleepover Blvd Apt 7 Atlanta GA 90999
125 Joe Blow 15 Main St San Diego CA 98765 456789123
我需要像Jane一样拔出线路,其中数字是右边特定数量的字符,但她没有数字。谢谢。哦,老兄,我鄙视这种编辑环境,对不起。九位数字应该有换行符,因此三个示例行是一个高于另一个。Hm。我不完全理解你的算法。如果您希望使用字符操作,我建议使用
cut-c
,对于字段操作,请使用
cut-f
(或
awk
)。如果你描述你的算法更多,我会提供工作的解决方案。谢谢你,这很有帮助<代码>cat myfile | cut-c 99-109提供文件每行的内容。我现在需要知道的是,当没有内容时,如何输出行号。您能提供示例文件和所需输出吗?
123 John Doe 9999 Park Ave NY NY 10016 123456789
124 Jane Doe 14685 Sleepover Blvd Apt 7 Atlanta GA 90999125 Joe Blow 15 Main St San Diego CA 98765456789123我需要像Jane一样拉出行,其中数字是右边特定数量的字符,但她没有数字。谢谢。哦,老兄,我鄙视这种编辑环境,对不起。九位数字应该有换行符,因此三个示例行是一个高于另一个。Hm。我不完全理解你的算法。如果您希望使用字符操作,我建议使用
cut-c
,对于字段操作,请使用
cut-f
(或
awk
)。如果你描述你的算法更多,我会提供工作的解决方案。谢谢你,这很有帮助<代码>cat myfile | cut-c 99-109提供文件每行的内容。我现在需要知道的是,当没有内容时,如何输出行号。就是这样!谢谢,我显然不懂awk语法,我在尝试没有“if”-duh的东西。非常感谢你们两位。干杯我认为这行不通,因为将有11个空白字符而不是
”…谢谢,beny,在我的情况下,它是有效的,因为文件中的空格都是空格。就是这样!谢谢,我显然不懂awk语法,我在尝试没有“if”-duh的东西。非常感谢你们两位。干杯我认为这行不通,因为将有11个空白字符而不是
”…谢谢你,beny,在我的情况下,它会起作用,因为文件中的空白都是用空格填充的。