awk,打印以四位数字开头的行

Luk*_*ach 4 awk

我想打印一个以四位数字开头的文件中的所有行.我尝试了这个allredy但它不起作用:

cat data.txt | awk --posix '{ if ($1 ~ /^[0-9]{4}/) print $1}'
Run Code Online (Sandbox Code Playgroud)

没有生成输出

下一行打印所有以数字开头的lins:

cat data.txt | awk --posix '{ if ($1 ~ /^[0-9]/) print $1}'
Run Code Online (Sandbox Code Playgroud)

fed*_*qui 7

用awk:

$ awk '/^[0-9][0-9][0-9][0-9]/ {print $1}' your_file
Run Code Online (Sandbox Code Playgroud)

也就是说,检查从该行开始的4位数.

更新:第5个字符不是数字.

$ awk '/^[0-9][0-9][0-9][0-9]([^0-9].*)?$/ {print $1}' your_file
Run Code Online (Sandbox Code Playgroud)

注意没有必要使用这个{ if ($1 ~ /^[0-9]/)句子,它只是完成/^.../.


Chr*_*our 2

对于打印与给定正则表达式匹配的行,grep第一个工具是:

grep -Eo '^[0-9]{4}[^0-9]*\s' file
Run Code Online (Sandbox Code Playgroud)