我想在 Linux 中屏蔽文件中的位,如下所示:
actual : 00-00000000-00000011-00110010-10000000
expect : 00-00000000-00000001-01101010-00000000
error : 00-00000000-00000010-01011000-00000000
Run Code Online (Sandbox Code Playgroud)
在输出中,该actual部分应该保持原样,除非,error然后1位actual应该被屏蔽X
可以看出,error是和数据的异或。actualexpected
输出应该看起来像这样:
output : 00-00000000-000000X1-0X1XX010-10000000
Run Code Online (Sandbox Code Playgroud)
是否可以使用 SED、AWK 等命令来执行此操作?
到目前为止做了什么:
grep 'err' gpbat | sed 's?-??g' | cut -c 11-35 | sed 's?1?X?g' > a1
grep 'act' gpbat | sed 's?-??g' | cut -c 11- > a2
Run Code Online (Sandbox Code Playgroud)
但从这里开始,不知道如何合并a1&a2
文件_A
Name: John Smith
Grade: 8
Institute: Baldwin
Number of entries: 125
State: Texas
Run Code Online (Sandbox Code Playgroud)
文件_B
Name: David Buck
Grade: 9
Institute: High Prime
Number of entries: 123
State: California
Run Code Online (Sandbox Code Playgroud)
有许多此类类似的文件,其中条目数(位于所有文件中的第 4 行)必须加倍。
对于 File_A,它应该是 250,对于 File_B,它应该是 246。
如何对 Linux 中的所有文件执行此操作?(使用 sed 或 awk 或任何其他命令)
尝试过的命令:
sed -i '4s/$2/$2*2/g' *.txt (nothing happening from this)
awk "FNR==4 {sub($2,$2*2)}" *.txt (getting syntax error)
Run Code Online (Sandbox Code Playgroud)