- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我对 awk/sed/grep 很不熟悉,一直在努力寻找问题的解决方案。我有一个看起来像这样的 BIOS 配置文件..
...
Dual Boot Order #1=0001
Dual Boot Order #2=0002
Dual Boot Order #3=0003
...
Dual Boot Order #15=000E
...
我想做的是检测某个值是否在#1 位置,如果不是,稍后在启动顺序列表中找到它,并将其切换为当前在#1 位置的任何值.例如,如果我想优先考虑 000E 引导选项,我希望我的输出是..
...
Dual Boot Order #1=000E
Dual Boot Order #2=0002
Dual Boot Order #3=0003
...
Dual Boot Order #15=0001
...
我目前正在将#1 中的值存储在一个 shell 变量中,并计划检查它并根据该值执行下一个命令。
temp=$(awk '/Dual Boot Order #1=..../ { if ( $4 != "#1=000E" ) print $4 }' file.txt)
之后我还需要保存这些更改。任何人都知道更直接的方法来完成这个?谢谢!
最佳答案
让我们从这个测试文件开始:
$ cat configfile
...
Dual Boot Order #1=0001
Dual Boot Order #2=0002
Dual Boot Order #3=0003
...
Dual Boot Order #15=000E
...
现在,如果我们想将 000E
换成第一位:
$ awk -v x=000E '$4~x {sub(/=.*/, a, $4)} $4~/#1=/{a=$4; sub(/^[^=]*/, "", a); $4="#1="x} 1' configfile
...
Dual Boot Order #1=000E
Dual Boot Order #2=0002
Dual Boot Order #3=0003
...
Dual Boot Order #15=0001
...
如果您有 GNU awk (gawk) 并且您想就地更改文件:
gawk -i inplace -v x=000E '$4~x {sub(/=.*/, a, $4)} $4~/#1=/{a=$4; sub(/^[^=]*/, "", a); $4="#1="x} 1' configfile
-v x=000E
这定义了一个 awk 变量 x
,其值为 000E
。
$4~x {sub(/=.*/, a, $4)}
如果第四个字段是 x
的正则表达式匹配,则将其更新为 a
(从 #1
保存的值)。
$4~/#1=/{a=$4; sub(/^[^=]*/, "", a); $4="#1="x}
如果第四个字段用于#1
,则 (a) 将其当前值保存到 a
并且 (b) 将其值更新为 x
.
1
这是 awk 的 print-the-line 的神秘简写。
关于linux - 想要使用 awk 根据顺序切换 2 个值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39711154/
使用登录后,我想吐出用户名。 但是,当我尝试单击登录按钮时, 它给了我力量。 我看着logcat,但是什么也没显示。 这种编码是在说。 它将根据我在登录屏幕中输入的名称来烘烤用户名。 不会有任何密码。
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 这个问题似乎是题外话,因为它缺乏足够的信息来诊断问题。 更详细地描述您的问题或include a min
我是一名优秀的程序员,十分优秀!