我有一个名为a.txt的文件,

time="2022-08-02T15:07:53+05:30" level=info msg="\x1b[32m\x1b[1mPUBLIC\x1b[39m\x1b[0m http://some.s3-ap-southeast-2.amazonaws.com/ (\x1b[33mhttp://some.com\x1b[39m)"
time="2022-08-02T15:07:53+05:30" level=info msg="\x1b[31m\x1b[1mFORBIDDEN\x1b[39m\x1b[0m http://some.s3.amazonaws.com (\x1b[33mhttp://some.com\x1b[39m)"
time="2022-08-02T15:07:54+05:30" level=info msg="\x1b[31m\x1b[1mFORBIDDEN\x1b[39m\x1b[0m http://some.s3.amazonaws.com (\x1b[33mhttp://some.com\x1b[39m)"
time="2022-08-02T15:07:58+05:30" level=info msg="\x1b[31m\x1b[1mFORBIDDEN\x1b[39m\x1b[0m http://some-assets.s3.amazonaws.com (\x1b[33mhttp://some.com\x1b[39m)"
time="2022-08-02T15:08:01+05:30" level=info msg="\x1b[31m\x1b[1mFORBIDDEN\x1b[39m\x1b[0m http://some.s3.amazonaws.com (\x1b[33mhttp://some.com\x1b[39m)"

我想要这个yields

PUBLIC    http://some.s3-ap-southeast-2.amazonaws.com
FORBIDDEN http://some.s3.amazonaws.com
FORBIDDEN http://some.s3.amazonaws.com
FORBIDDEN http://some-assets.s3.amazonaws.com
FORBIDDEN http://some.s3.amazonaws.com

我试过这个

cat a.txt | cut -d "=" -f4- | cut -d "[" -f3- | cut -d "m" -f2- |  awk -F '\\.amazonaws.com' '{print $1".amazonaws.com"}'

这是工作,但我不能删除\x1b[39m\x1b[0m

推荐答案

使用sed

$ sed -E 's~([^[]*\[){2}[^A-Z]*([^\]*)[^ ]* ([^ ]*\.[a-z]+).*~\2 \3~' input_file | column -t
PUBLIC     http://some.s3-ap-southeast-2.amazonaws.com
FORBIDDEN  http://some.s3.amazonaws.com
FORBIDDEN  http://some.s3.amazonaws.com
FORBIDDEN  http://some-assets.s3.amazonaws.com
FORBIDDEN  http://some.s3.amazonaws.com

Linux相关问答推荐

GO:当使用NewManager调用创建cgroup时,权限被拒绝

我想强调某些条件是否与Linux中的全部输出匹配

通过ssh传输参数时避免字符串拆分

Boost更新失败,现在不确定我有哪个版本

如何使用 sed 和 date 命令替换和格式化字符串中的日期?

线程创建会在 Linux 中触发页面错误吗?它与软脏 PTE 有什么关系?

CMake:处理静态库和共享库的正确方法

操作系统信号处理循环 - 阻塞或非阻塞读取?

MessageBox 的 GTK 实现

如何在 linux 上为 JNI 应用程序编译动态库?

如何找出哪个进程正在消耗等待 CPU(即 I/O 阻塞)

如何在 Linux 中为 C 或 C++ 的进程设置 CPU 亲和性?

更改核心转储的位置

Linux批量转换:使用转换更改jpg的质量但保留其名称

如何从命令行打开 Ubuntu Linux 上的 AVD 管理器?

./studio.sh 之后的 Android Studio 错误

从 FTP 服务器下载所有文件

我可以使用 awk 将所有小写字母转换为大写吗?

如何在没有 root 用户的情况下在 Linux (CentOS) 中安装软件包并进行自动依赖处理?

如何处理以连字符 (-) 字符开头的文件名?