我有一个日志(log)文件,如下所示.这表明有许多文件丢失了.我想把它列出来.

$cat datafile.txt
    /data/kay/20091012.csv
    gawk: cmd. line:4: (FILENAME=/data/kay/out/501_20091013.txt FNR=1) fatal: file not file
    /data/kay/20091014.csv
    gawk: cmd. line:4: (FILENAME=/data/kay/out/501_20091015.txt FNR=1) fatal: file not file
    gawk: cmd. line:4: (FILENAME=/data/kay/out/501_20091016.txt FNR=1) fatal: file not file
    /data/kay/20091017.csv
    gawk: cmd. line:4: (FILENAME=/data/kay/out/501_20091018.txt FNR=1) fatal: file not file

我想列出文件丢失的日期.我的 playbook 如下:

$script.sh
awk '{if($1 -eq "gawk")print $4}' datafile.txt
echo ${echo $(awk '{if($1 -eq "gawk")print $4}' datafile.txt):-14,8}

它显示错误."糟糕的替补"

我想要的输出:

$outfile.txt
20091013
20091015
20091016
20091018

推荐答案

使用sed

$ sed -En '/^ +gawk/s/[^)]*_([^.]*).*/\1/woutput.txt' input_file
$ cat output.txt
20091013
20091015
20091016
20091018

使用awk

$ awk -F"[_.]" '/gawk/{print $3 > "output.txt" }' input_file
$ cat output.txt
20091013
20091015
20091016
20091018

Linux相关问答推荐

使用信号处理程序实现Hibernate 功能

x64 NASM 汇编程序在程序开始时显示分段错误

无法在嵌入式 Linux 中使用 libjpeg 以 RGB888 在 LCD(黑色)上显示 JPEG

为什么 liburing 写入性能低于预期?

如何计算文本的时差,如 YYYYMMDDHHMMSSXXX 格式,包括毫秒

使用 AWK 过滤 Linux 输出

如何使用awk或其他方法提取双引号中的子字符串?

为什么 8 位字符串文字可以包含多字节字符,而 char 向量不能?

使用打印命令 Select 子域

使用带有 gnome-keyring 的 Git 凭证助手作为 Sudo 时出错

为什么在编译 K&R2 第 1 章中最长的行示例时出现getline 的类型冲突错误?

Linux 上 pid_t、uid_t、gid_t 的大小

使用特定目录作为根目录压缩目录的命令

分段故障处理

如何使用 Ansible 等待服务器重启?

用于 ssh 的类似 teamviewer 的工具?

解压tar tar.bz2 文件报错

如何停止 Linux 上的不间断进程?

find -name "*.xyz" -o -name "*.abc" -exec 对所有找到的文件执行,而不仅仅是指定的最后一个后缀

Ionic android 构建错误 - 找不到ANDROID_HOME环境变量