小编jai*_*met的帖子

(GNU) find 可以执行不区分重音的(变音符号不敏感的)搜索吗?

我想对目录层次结构中的文件执行不区分重音的搜索。

\n
$ touch a \xc4\x85 \xc3\xa4 \xc3\xa0 \xc3\xa1 \xc3\xa2\n$ find . -iname \'*a*\'\n./a\n# How do I get find to return all 6 filenames?\n
Run Code Online (Sandbox Code Playgroud)\n

我正在运行 Debian 11,Bullseye

\n

我的校对能力很弱!

\n

是否有一个选项、区域设置或其他一些方法可以让我以不区分重音的方式进行查找工作?

\n

根据评论中的要求,locale返回:

\n
LANG=en_GB.UTF-8\nLANGUAGE=en_GB:en\nLC_CTYPE="en_GB.UTF-8"\nLC_NUMERIC="en_GB.UTF-8"\nLC_TIME="en_GB.UTF-8"\nLC_COLLATE="en_GB.UTF-8"\nLC_MONETARY="en_GB.UTF-8"\nLC_MESSAGES="en_GB.UTF-8"\nLC_PAPER="en_GB.UTF-8"\nLC_NAME="en_GB.UTF-8"\nLC_ADDRESS="en_GB.UTF-8"\nLC_TELEPHONE="en_GB.UTF-8"\nLC_MEASUREMENT="en_GB.UTF-8"\nLC_IDENTIFICATION="en_GB.UTF-8"\nLC_ALL=\n
Run Code Online (Sandbox Code Playgroud)\n

find

7
推荐指数
1
解决办法
148
查看次数

Debian:“dpkg -l”名称字段有时包含 arch/abi,有时不包含。为什么?

dpkg -l最近的 Debian bullseye (v11.3) 机器上的(已修剪)输出:

SE  Name              Version             Arch  Description
ii  bind9-host        1:9.16.27-1~deb11u1 amd64 DNS Lookup Utility
ii  bind9-libs:amd64  1:9.16.27-1~deb11u1 amd64 Shared Libraries used by BIND 9
               ^^^^^
Run Code Online (Sandbox Code Playgroud)

问题:为什么bind9-libs包的名称字段显示架构/abi,而bind9-host的名称字段不显示架构/abi?

前言:

$ dpkg --print-architecture
amd64


$ grep -A6 "Package: bind9-host" /var/lib/dpkg/status
Package: bind9-host
Status: install ok installed
Priority: standard
Section: net
Installed-Size: 376
Maintainer: Debian DNS Team <team+dns@tracker.debian.org>
Architecture: amd64


$ grep -A6 "Package: bind9-libs" /var/lib/dpkg/status
Package: bind9-libs
Status: install ok installed
Priority: standard
Section: libs
Installed-Size: 3734
Maintainer: …
Run Code Online (Sandbox Code Playgroud)

debian dpkg

6
推荐指数
1
解决办法
383
查看次数

sed:删除(输入的)最后一行会停止我的脚本

我正在测试一个包含 2 个命令的sed脚本。第一个命令从输入中删除一行,第二个命令将一行附加到输入的末尾,因此:

$ cat input.txt 
Line 1
Line 2
Line 3

$ sed '/Line 1/d;$aAppended line' input.txt
Line 2
Line 3
Appended line

$ sed '/Line 2/d;$aAppended line' input.txt
Line 1
Line 3
Appended line
Run Code Online (Sandbox Code Playgroud)

到目前为止,一切都很好。但是,如果我选择删除的行恰好是输入的最后一行,则脚本中的第二个命令永远不会运行:

$ sed '/Line 3/d;$aAppended line' input.txt
Line 1
Line 2
Run Code Online (Sandbox Code Playgroud)

我了解到sed一次读取输入行,对每一行“执行”脚本,直到没有更多的行可供读取,因此我的脚本永远不会“完成”(即Appended line永远不会附加)这一事实说得通。

尽管如此,这对我来说是一个问题(我仍然需要追加Appended line)。有谁熟悉这个问题,如果是,是否有“标准解决方法”?我认为一种替代方法(删除最后一行然后附加一行)是替换

$ sed 's/Line 3/Appended line/' file.txt
Line 1
Line 2
Appended line
Run Code Online (Sandbox Code Playgroud)

这是我唯一的选择吗?

sed

5
推荐指数
2
解决办法
817
查看次数

标签 统计

debian ×1

dpkg ×1

find ×1

sed ×1