我有以下文件样本:
123456789000000000123456789000000000
123456789123456789123456789000000000
我想要在行的第10和第18位之间有000000000
的行。以这种方式,将跳过/忽略第二行。
如何实现这一目标?
答案 0 :(得分:3)
您必须使用^
作为行首,.
表示任何字符
你可以从
echo "123456789000000000123456789000000000
123456789123456789123456789000000000" | grep "^.........000000000"
对于此命令,您需要计算命令中的字符数 该命令可以简化为
echo "123456789000000000123456789000000000
123456789123456789123456789000000000" | grep -E "^.{9}0{9}"
答案 1 :(得分:0)
使用awk
substr
而不使用任何正则表达式更容易:
awk 'substr($0, 10, 9) != "000000000"' file
123456789123456789123456789000000000
substr($0, 10, 9)
将获得第10个位置和第18个位置之间每个记录的子字符串。
您也可以使用:
awk 'substr($0, 10, 9) != sprintf("%09d", 0)' file
sprintf("%09d", 0)
将打印0
9次。