我有以下文件:
------
Introduction
----------
Optio eum enim ut. Et quia molestias eos. Doloribus laborum quia quae. Magnam cupiditate quis consectetur.
-----
Chapter1: Foo
-----
Odit beatae eius voluptas temporibus sint quia. Eos et tempora similique laboriosam optio consequatur quibusdam. Fugit suscipit cupiditate ea perspiciatis rem labore cum eos.
-----
Chapter bar
-----
Et consequatur quia quia et architecto et sunt. Perferendis qui deserunt qui est illo est sapiente ipsam. Fugiat vel amet magni in quam. Eligendi totam cum sapiente harum …Run Code Online (Sandbox Code Playgroud) Fedora 中的 tar 手册页(以及die.net 上的 tar 手册页)提到了 --acls 和 --xattrs 和 --selinux 选项,但在 GNU 网站的 tar 手册中没有提到它们
为什么?这是否意味着 Fedora 软件包与原始 gnu tar 不同?
这个问题可能已被列出,但我无法找到一个确切的命中。
我试图浏览一个文件,匹配一个模式并用其他东西替换它。但是,还有其他模式出现,但我只需要替换那些长度为 17 个字符的模式。
例子:
内容:
dlkfhfd|fedfe|dfwe3f347fde|3745978|dlkfhr**|376663781736102|**fedfe|dfwe3f347fde
Run Code Online (Sandbox Code Playgroud)
期待:
dlkfhfd|fedfe|dfwe3f347fde|3745978|dlkfhr**|37xxxxxxxxxxxxx|**fedfe|dfwe3f347fde
Run Code Online (Sandbox Code Playgroud)
进展:我能够将表达式与正则表达式模式匹配: **\|37[0-9]{13}\|**
但是,如果我将它放在 . 中sed,它只会替换文件中的所有内容。
sed -e s/\|37[0-9]{13}\|/\|37xxxxxxxxxxxxx\|/g
Run Code Online (Sandbox Code Playgroud)
我的 sed 版本是 4.2.2
谷歌搜索揭示了这个 slashdot 故事产生了这个自 2016 年以来没有提交过的 github 存储库。有关于github.com上市22602个叉,但这些都将是主要(如果不是几乎所有的),只是为发展叉托沃兹/ Linux的。
我之前读过 Linux 已经变得相当笨拙。在我看来,至少在用户体验方面,Linux 比我记忆中的 10 多年前更加精致(显然这不是对内核的准确评估;我现在才阅读 K&R,从未涉足内核源代码,除了粗略一瞥会产生“哇,我无法理解这一行”,但我知道内核中有关 linux-on-the-laptop 功能的大量开发,例如) . 无论如何,我知道我已经看到 BSD 人抱怨 Linux cruft。考虑到基于 vim cruft 的 vim 的 neovim 分支,我认为类似的努力会对内核有所回报。
提示这个问题的是LWN 上的这篇文章,讨论了使用 clang 编译 Linux 的尝试。我读到内核使用了许多特定于 gcc 的怪癖/特殊功能进行优化(尽管与我的记忆相比,链接的文章似乎淡化了它们),我开始怀疑是否有人试图重构/分叉内核来制作它更便携,或者至少可以在 gnu 环境之外编译。我也明白 gcc 本身很粗鲁,Linus 自己也批评过。
我知道我个人对 RMS 和 GNU 的厌恶以及对没有 GNU 的 Linux 的兴趣并不孤单;我知道Alpine Linux不需要 gnu 工具,但内核仍然是用 gcc 编译的,不是吗?有很多关于替代工具链和用户空间软件的参考,但我特别想知道内核以及是否有消除 gcc/gnu 依赖的分叉——认为这是标题的一个附属问题——在我看来这将是一个废物单独问吧。
我对 GNU coreutils 和 GNU Bash 感到困惑,
我已经安装了Bash GNU 项目 - 自由软件基金会,
我应该安装Coreutils - GNU 核心实用程序吗
我怎样才能区分它们?
假设我有一个包含异常的日志文件,如图所示
java.lang.NullPointerException blabla
ABC.Exception blalabbla
dogchacecat.Exception yadayada
Run Code Online (Sandbox Code Playgroud)
我希望能够从头到尾输出每一行直到(包括)“异常”
所需的输出:
java.lang.NullPointerException
ABC.Exception
dogchacecat.Exception
Run Code Online (Sandbox Code Playgroud)
如何使用任何 GNU 工具(grep、awk、sed)执行此操作?谢谢!
我使用下面的代码来获得makefile targets list在大多数情况下都可以正常工作的代码,但是当您像这样使用 makefile 时,您只会获得两个目标,而不是全部。
另一个命令不显示
猫Makefile
command: ## Command description
@echo "Execution log"
another-command: ## Command description
@echo "Execution log"
command2: ## Command description
@echo "Execution log"
Run Code Online (Sandbox Code Playgroud)
输出是:
command
command2
Run Code Online (Sandbox Code Playgroud)
我不明白为什么我没有收到命令another-command,这是代码
`make -qp | awk -F':' '/^[a-zA-Z0-9][^$#\\\/t=]*:([^=]|$)/ {split($1,A,/ /);for(i in A)print A[i]}' `;
Run Code Online (Sandbox Code Playgroud)
可能是什么问题呢 ?
我用这个作为参考 如何列出make中的所有目标?
关于在 vim 中打开除 [condition] 之外的所有文件的答案:
https://unix.stackexchange.com/a/149356/98426
给出了类似的答案:
find . \( -name '.?*' -prune \) -o -type f -print
(我修改了答案,因为我在这里的问题与 vim 无关)
其中否定条件位于转义括号中。但是,在我的测试文件中,以下内容
find . -type f -not -name '^.*'
产生相同的结果,但更易于读写。-not 方法与 -prune 方法一样,会修剪任何以 . (点)。我想知道 -not 和 -prune -o -print 方法会产生不同结果的边缘情况是什么。
Findutils 的信息页面如下:
-not expr : 如果 expr 为假则为真
-prune:如果文件是目录,则不下降到其中。(并进一步说明需要 -o -print 才能实际排除顶级匹配目录)
他们似乎很难以这种方式进行比较,因为 -not 是一个测试,而 -prune 是一个动作,但对我来说,它们是可以互换的(只要 -o -print 出现在 -prune 之后)
我有 GNU grep 3.3-1(Debian Buster 中的当前版本)。
来自man grep:
退出状态
通常,如果选择了一行,退出状态为 0,如果没有选择任何行,则退出状态为 1,如果发生错误,则退出状态为 2。但是,如果使用
-qor--quiet或--silent选择了一行,即使发生错误,退出状态也是 0。
这与POSIX一致。(-L此处未指定。)
最新版本的完整文档和最新提交中的文档没有关于-L( --files-without-match) 的更多详细信息。
grep -L x <<<x(in bash) 以代码 1 退出。我不确定这是否与文档一致(这里选择的行到底是什么?),但至少这是可以解释的:没有输入文件符合必须没有x.
grep -Lq x <<<x并且grep -L x <<<x >/dev/null都以代码 0 退出。好吧,-q稍微好理解一点,但是为什么 stdout 重定向会影响退出代码?因此,要在抑制输出的同时获得原始退出代码行为,(set -o pipefail; /bin/grep -L x <<<x | cat >/dev/null)需要进行类似的 hack 。这是为什么? …
a.1.58 fadado/CSV https://github.com/fadado/CSV
a.1.63 jehiah/json2csv https://github.com/jehiah/json2csv
a.1.80 stedolan/jq https://github.com/stedolan/jq/issues/370
Run Code Online (Sandbox Code Playgroud)
mapfile -d $'\t' -t Link < <(awk 'BEGIN{FS="\t"; OFS="\t"} {print $2,$3}' "${SessionP}" | fzf)
Run Code Online (Sandbox Code Playgroud)
在上面的命令中,我使用-t了 mapfile 选项,但echo "${Link[1]}"打印了一个新的行尾!
参考