awk 中的模式匹配

awk 中的模式匹配

我打算修改 ls -la 的输出以显示file命令的输出。下面的命令可以很好地达到这个目的

find /opt -type f | xargs ls -let | awk 'BEGIN { OFS="\t" } { sprintf("file \"%s\"", $10) | getline type; print type,$1,$3,$4 }' | tr ":" "\t"

ldd现在,如果文件类型输出与模式“ELF.*execuatble”匹配,我想修改它以显示命令的输出(逗号分隔)。我尝试了各种组合来匹配 awk 中使用的关键字if,如果匹配成功,则运行ldd,但无济于事。

这可能吗?

操作系统是Solaris,我使用ksh。

答案1

awk 提供模式匹配

awk '/ELF*.executable/ { ... }'

编辑:在你的情况下:

find /opt -type f | xargs ls -let | awk 'BEGIN { OFS="\t" } /ELF*.executable/ { sprintf("file \"%s\"", $10) | getline type; print type,$1,$3,$4 }' | tr ":" "\t"

相关内容