我想在匹配之前显示所有行,例如不仅是 10、7 或 14 行,如如何在 bash 中的 grep 结果之前/之后获取行中所述?.
我该怎么做?是否包含匹配的行并不重要。
例如,而不是:
... | grep -B 10 -- "foo"
Run Code Online (Sandbox Code Playgroud)
我想要:
... | grep -B -- "foo"
Run Code Online (Sandbox Code Playgroud)
但是这最后的代码不起作用。
我尝试创建一个安装 Ubuntu 20.04 LTS Desktop 64 位的 UEFI 笔式驱动器。
\n该exFAT分区gpt2包含整个 Ubuntu 20.04 LTS 系统映像。
\nFAT32分区gpt1包含以下文件:
.\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 boot\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 grub\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 x86_64-efi\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 exfat.mod\n\xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 EFI\n \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 BOOT\n \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 BOOTX64.EFI\n \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 grub.cfg\n \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 grubx64.efi\n \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 mmx64.efi\n\n5 directories, 5 files\nRun Code Online (Sandbox Code Playgroud)\n其中该grub.cfg文件包含以下行:
insmod exfat\nsearch --no-floppy --set=root --fs-uuid 7026-67D5\nconfigfile /boot/grub/grub.cfg\nRun Code Online (Sandbox Code Playgroud)\n将Secure Boot方法从改为Deployed Mode后Audit Mode,可以从该分区的文件中正确调用该分区grub.cfg的默认文件。\n事实上,会出现正确的安装选项。\n选择选项后,无限循环并按下键我意识到原因是一个未指定的错误:,重复了很多次。\n这个错误的原因可能是什么?exfatgrub.cfgFAT32UbuntuESCstdin: invalid argument
我必须在每次出现的 # 之后添加一个空格,只有当 # 位于行首且 # 之后至少有一个不是空格的字符时。例如这段代码:
echo "# ok" | sed "s|^#[^ ]|# |g"
Run Code Online (Sandbox Code Playgroud)
# ok按预期返回,但此代码:
echo "#ok" | sed "s|^#[^ ]|# |g"
Run Code Online (Sandbox Code Playgroud)
返回# k并没有# ok像预期的那样。
我如何获得# ok输出?
编辑:
这是解决我的问题的代码,感谢@FedonKadifeli:
echo -e "#ok\n# ok\n #ok\n#ok #ok\n##ok #ok"
Run Code Online (Sandbox Code Playgroud)
返回:
#ok
# ok
#ok
#ok #ok
##ok #ok
Run Code Online (Sandbox Code Playgroud)
这段代码:
echo -e "#ok\n# ok\n #ok\n#ok #ok\n##ok #ok" | sed -r 's|^#(#*)([^[:space:]#])|#\1 \2|g'
Run Code Online (Sandbox Code Playgroud)
返回:
# ok
# ok
#ok
# ok #ok
## ok #ok
Run Code Online (Sandbox Code Playgroud) 我有这个文本文件或 sdout:
text1
text2
text1
text2
text1
text2
Run Code Online (Sandbox Code Playgroud)
我有这个代码:
perl -pe "s/text2\n\z/text3/s" text.txt #Note the modifier "/s"
Run Code Online (Sandbox Code Playgroud)
我和 \z 希望他明白这是 eof 之前的最后一行,因此我希望:
text1
text2
text1
text2
text1
text3
Run Code Online (Sandbox Code Playgroud)
但它返回:
text1
text3text1
text3text1
text3 #without final newline
Run Code Online (Sandbox Code Playgroud)
我究竟做错了什么?
我需要使用udisksctl. 我尝试了网上已经看到的
经典方法:/dev/sda?*
udisksctl mount -b /dev/sda?*
Run Code Online (Sandbox Code Playgroud)
或者
udisksctl unmount -b /dev/sda?*
Run Code Online (Sandbox Code Playgroud)
/dev/sda?*就我而言相当于/dev/sda1 /dev/sda2
但udisksctl仅安装或卸载列出的第一个分区/dev/sda1。
如何让它一次挂载或卸载所有分区?
我有包含以下内容的文件“test.txt”:
Val1 = '59'
Val2 = '76'
Val3 = '42'
Val4 = '53'
Run Code Online (Sandbox Code Playgroud)
我用这个命令:
perl -pe "s/^Val2 = '(.*)'/\1/" test.txt
Run Code Online (Sandbox Code Playgroud)
我想要:
76
Run Code Online (Sandbox Code Playgroud)
但我得到:
Val1 = '59'
76
Val3 = '42'
Val4 = '53'
Run Code Online (Sandbox Code Playgroud)