如下日志文本,想要从中提取 androidboot.serialno= 后面的字符串
Feb 19 03:20:15 firefly kernel: [ 0.000000] Booting Linux on physical CPU 0x0 Feb 19 03:20:15 firefly kernel: [ 0.000000] Initializing cgroup subsys cpuset Feb 19 03:20:15 firefly kernel: [ 0.000000] Initializing cgroup subsys cpu Feb 19 03:20:15 firefly kernel: [ 0.000000] Initializing cgroup subsys cpuacct Feb 19 03:20:15 firefly kernel: [ 0.000000] Linux version 4.4.194 (jincheng@jincheng-PC) (gcc version 6.3.1 20170404 (Linaro GCC 6.3-2017.05) ) #15 SMP Thu Dec 30 14:52:16 CST 2021 Feb 19 03:20:15 firefly kernel: [ 0.000000] Boot CPU: AArch64 Processor [410fd034] Feb 19 03:20:15 firefly kernel: [ 0.000000] earlycon: Early serial console at MMIO32 0xff1a0000 (options '') Feb 19 03:20:15 firefly kernel: [ 0.000000] bootconsole [uart0] enabled Feb 19 03:20:15 firefly kernel: [ 0.000000] On node 0 totalpages: 516096 Feb 19 03:20:15 firefly kernel: [ 0.000000] DMA zone: 8184 pages used for memmap Feb 19 03:20:15 firefly kernel: [ 0.000000] DMA zone: 0 pages reserved Feb 19 03:20:15 firefly kernel: [ 0.000000] DMA zone: 516096 pages, LIFO batch:31 Feb 19 03:20:15 firefly kernel: [ 0.000000] psci: probing for conduit method from DT. Feb 19 03:20:15 firefly kernel: [ 0.000000] psci: PSCIv1.0 detected in firmware. Feb 19 03:20:15 firefly kernel: [ 0.000000] psci: Using standard PSCI v0.2 function IDs Feb 19 03:20:15 firefly kernel: [ 0.000000] psci: Trusted OS migration not required Feb 19 03:20:15 firefly kernel: [ 0.000000] PERCPU: Embedded 21 pages/cpu @ffffffc07fede000 s46312 r8192 d31512 u86016 Feb 19 03:20:15 firefly kernel: [ 0.000000] pcpu-alloc: s46312 r8192 d31512 u86016 alloc=21*4096 Feb 19 03:20:15 firefly kernel: [ 0.000000] pcpu-alloc: [0] 0 [0] 1 [0] 2 [0] 3 [0] 4 [0] 5 Feb 19 03:20:15 firefly kernel: [ 0.000000] Detected VIPT I-cache on CPU0 Feb 19 03:20:15 firefly kernel: [ 0.000000] CPU features: enabling workaround for ARM erratum 845719 Feb 19 03:20:15 firefly kernel: [ 0.000000] Built 1 zonelists in Zone order, mobility grouping on. Total pages: 507912 Feb 19 03:20:15 firefly kernel: [ 0.000000] Kernel command line: storagemedia=emmc androidboot.storagemedia=emmc androidboot.mode=normal androidboot.verifiedbootstate=orange androidboot.slot_suffix= androidboot.serialno=0QLQUXNZHZ ro rootwait earlycon=uart8250,mmio32,0xff1a0000 swiotlb=1 console=ttyFIQ0 root=PARTLABEL=rootfs rootfstype=ext4 overlayroot=device:dev=PARTLABEL=userdata,fstype=ext4,mkfs=1 coherent_pool=1m systemd.gpt_auto=0 cgroup_enable=memory swapaccount=1
可以使用如下方法:
1. 管道方式处理
grep "androidboot.serialno" /var/log/kern.log | xargs -n 1 | grep "androidboot.serialno" | xargs -d = | awk '{print $2}'
2. grep的-P参数使用perl正则语法
grep -oP 'androidboot.serialno=K.*?(?= )' /var/log/kern.log
grep -oP 'androidboot.serialno=K[^ ]+' /var/log/kern.log
3. awk查找
awk -F'androidboot.serialno=' '{for(i=2; i<=NF;i++){split($i, a, " "); print a[1]}}' /var/log/kern.log



