cat old.log | grep "setAlpha" | awk -F: '{ print $4}'
这句话的意思就是,awk语句根据前面生成的文本,以‘-F’后面的符号,即‘:’(冒号)为分界点进行分割,然后将分割后的第四个元素打印出来(即‘print $4’),运行结果为:
这样我们可以初步提取到包含我们想要信息的数据,后面可以根据该输出进一步处理文本:
cat old.log | grep "setAlpha" | awk -F: '{ print $4}' | awk -F, '{ print $1"="$2 }'
上面语句的含义就是将文本以‘,’(逗号)为分界点就行分割,并且打印第1个和第2个元素,两个元素中间用‘=’符号连接。运行结果为:
现在的结果越来越接近我们想要的了,然后我们根据这一结果进一步处理:
cat old.log | grep "setAlpha" | awk -F: '{ print $4}' | awk -F, '{ print $1"="$2 }' | awk -F= '{ print $2 "," $4 }'
我们根据上一步的结果以‘=’为分界点进行分割,然后打印第2个与第4个元素,两个元素之间用“,”连接,运行结果为:
可以看到通过我们之前一系列步骤的处理,我们想要的数据已经呈现出来了,对于数据量比较大的文本,我们可以将最终的结果存储到一个文件中:
cat old.log | grep "setAlpha" | awk -F: '{ print $4}' | awk -F, '{ print $1"="$2 }' | awk -F= '{ print $2 "," $4 }' > new.log
我们打开new.log文件发现我们的结果已经在里面了:
掌握这个命令的逻辑之后,我们就可以从海量的数据中批量提取具有一定规则的字段。
利用shell简本提取txt文件中任意字段前言0. 一个例子1. cat命令2. grep命令3. awk命令4. 看看效果前言对于测试中出现的log,我们经常需要提取其中的关键信息进行分析,之前我通常使用python的工具来处理一些字符串,但是效率不是很高。现在通过shell脚本的方法会极大的增加效率,一句话就可以在任意的txt文本中提取到我们想要的字段,下面我们来看一下这个神奇的工具。0. 一个例子假如我们要从下面这段txt格式的log中提取‘sequence’后面的数字‘6092’以及‘alp
使用grep过滤掉无用信息,执行 udhcpc | grep “DNS”
使用sed抓取第二行,-n ‘2p’代表第二行,-n ‘1,3p’代表第一到三行,以回车换行符区分。执行 udhcpc | grep “DNS” | sed -n ‘2p’
使用awk抓取第四列,$4代表第四列,以空格区分。执行 udhcpc | grep “DNS” | sed -n ‘2p’ | awk ‘{print $4}’
最后使用tr去除字符串最后的\n,默认会包含。执行
在linux中经常要对一些动态的文本文件抽取指定的字符串,比如执行ps命令后想要获取指定的运行进程(如ps自己)的PID号(同一个进程每次启动的时候pid号是随机分配的)。该怎么办呢?当然,可以用一些截取字符串的方法,这里介绍一下用2种方法来解决这类问题。
一、sed+grep方法:
首先大概了解一下sed,sed是linux里面一个非交互性的文本流编辑器(好长的定义,反正我听起来我很拗口)。
该bash脚本监视给定目录中的更改,然后运行应用程序。 它可以像服务一样运行,其中用户没有启动和停止服务的特权。
Watcher以一秒钟的周期(称为滴答)运行,并且与--dir匹配的所有文件一次一次传递到使用所需--app标志指定的应用程序。 Watcher假定helper应用程序是同步运行的,并且将退后直到它完成了每个文件,然后watcher.sh才检查新文件。 可以通过将辅助程序作为后台进程运行来更改此行为。
监视程序可以在不同的目录和文件类型上运行,但是只有一个监视程序可以监视任何给定目录。 如果另一个进程尝试在同一目录中运行另一个实例,则watcher.sh将显示一条消息,其中包含正在运行的实例的pid,然后退出。
Watcher及其运行的应用程序,分别写入STDOUT和STDERR。 如果在没有附加STDOUT的情况下运行watcher,则事件将记录到watcher
To compile Wayland-EGL in Yocto, you can follow these steps:
1. Add the necessary layers to your Yocto build. This may include the meta-openembedded layer, which contains the recipes for Wayland and other related packages.
2. Configure your build to include the Wayland-EGL packages. You can do this by adding the following lines to your local.conf file:
IMAGE_INSTALL_append = " wayland-protocols"
IMAGE_INSTALL_append = " wayland-egl"
This will ensure that the Wayland-Protocols and Wayland-EGL packages are included in your Yocto image.
3. Build your Yocto image. You can do this by running the `bitbake` command with the name of your image, such as:
bitbake core-image-minimal
This will compile the necessary packages and dependencies, and generate a Yocto image that includes Wayland-EGL.
4. Configure your system to use Wayland-EGL as the default display server. You can do this by modifying the `weston.ini` file in your image's root filesystem. Add the following lines to the file:
[core]
modules=eglbackend.so,desktop-shell.so
[shell]
background-image=/usr/share/backgrounds/gnome/Aqua.jpg
panel-location=none
This will configure the Weston compositor to use EGL as the backend for rendering graphics.
5. Boot your Yocto image and test Wayland-EGL. You can do this by running a Wayland client application, such as `weston-terminal` or `weston-flower`. If everything is configured correctly, you should see the application window rendered using EGL.
These are the basic steps for compiling Wayland-EGL in Yocto. However, the exact steps may vary depending on your specific Yocto setup and hardware platform. It's recommended to consult the Yocto documentation and community resources for more detailed instructions and troubleshooting tips.