上下文(如果你不在乎,请跳过;如果你怀疑我完全走错了路,请阅读)
\n对于内存较小的嵌入式系统,我想生成仅包含实际需要的字形的字体。因此,在构建时,我需要扫描语言文件,从字符串中提取字符并使用它们的代码作为字体生成工具的参数。
\n包含相关字符串的翻译文件(当然,这只是一个例子,但至少它涵盖了一些 unicode 内容)
\nTEXT_1=Foo\nTEXT_2=Bar\nTEXT_3=Baz\nTEXT_4=\xc3\x9cnic\xc3\xb8d\xc3\xa9\nTEXT_5=\xce\xb5\xce\xbb\xce\xbb\xce\xb7\xce\xbd\xce\xb9\xce\xba\xce\xac\n
Run Code Online (Sandbox Code Playgroud)\n预期产出
\n0x42,0x61,0x72,0x42,0x61,0x7A,0x46,0x6F,0x6F,0xDC,0x6E,0x69,0x63,0xF8,0x64,0xE9,0x3B5,0x3BB,0x3BB,0x3B7,0x3BD,0x3B9,0x3BA,0x3AC\n
Run Code Online (Sandbox Code Playgroud)\n到目前为止我的方法
\n该脚本只是执行我所描述的操作:sed
读取文件,提取字符串,并准备将其格式化printf
,sort -u
删除重复项:
for char in $(sed "s/[^=]*=//;s/./'& /g" myLang.translation|sort -u); do\n printf "0x%02X\\n" $char\ndone\n
Run Code Online (Sandbox Code Playgroud)\n这适用于这个例子,但感觉丑陋、不可靠、错误,对于真实文件来说可能很慢,所以你能说出一个更好的工具、更好的方法、更好的东西吗?
\ncharacter-encoding shell-script text-processing sort unicode
我正在尝试统计 git diff 的插入和删除。
我有以下内容,当通过管道传输一个或多个形式的字符串时"4 files changed, 629607 insertions(+), 123 deletions(-)"
可以计算总数:
grep -Eo 'changed, ?(\d+) insertion.*(\d+) deletion' | awk '{ i+=$2; d+=$4 } END { print "insertions: ",i," deletions: ",d }'
Run Code Online (Sandbox Code Playgroud)
这会产生insertions: 629607 deletions: 123
然而,有时 diff 并不遵循上述格式,而是只有插入或只有删除。
在这些情况下,我不需要匹配两个数字,而只需要匹配一个(并确保它最终出现在右列中)。
如何创建一个足够灵活的正则表达式来处理这些变化,并且生成可以awk
正确计数的输出?
docker run --rm --cap-drop=net_bind_service --publish 8080:80 --name nginx nginx
ps --forest -fC nginx
UID PID PPID C STIME TTY TIME CMD
root 449870 449847 0 12:38 ? 00:00:00 nginx: master process nginx -g daemon off;
101 449929 449870 0 12:38 ? 00:00:00 \_ nginx: worker process
101 449930 449870 0 12:38 ? 00:00:00 \_ nginx: worker process
101 449931 449870 0 12:38 ? 00:00:00 \_ nginx: worker process
101 449932 449870 0 12:38 ? 00:00:00 \_ nginx: worker process
101 …
Run Code Online (Sandbox Code Playgroud) CSV 文件:
A,12345,hello
B,67890,hi
A,123456,yo
Run Code Online (Sandbox Code Playgroud)
预期输出:如果第一列是:,则应在第二列末尾添加两个零A
:
A,1234500,hello
B,67890,hi
A,12345600,yo
Run Code Online (Sandbox Code Playgroud) 在弄清楚如何管理项目的 python 环境时,我正在考虑使用 Docker容器。我意识到 Debian wiki与其他在线资源一样对 Docker 群组的风险发出了警告。但我不太确定:
安装 Docker 后创建 Docker 组的可能性本身是否会带来风险?
换句话说,如果我不创建一个组,或者将自己添加到一个组中(注意:我是唯一的用户),那么按照他们的博客的建议安装 Docker 并使用它来管理环境是否存在风险?
但是,在同一环境中进行多个项目很快就会成为一个问题,因为我们可能会遇到配置或依赖项冲突。此外,当与队友共享项目时,我们还需要协调我们的环境。为此,我们必须以易于共享的方式定义项目环境。
一个好方法是为每个项目创建独立的开发环境。通过使用容器和 Docker Compose 来管理它们,可以轻松完成此操作。
编辑:哎呀,我刚刚发现我可能重复了docker 安装了一个巨大的安全漏洞吗?
在构建提取 ZIP 文件的应用程序时,我注意到有时 ZIP 文件明确包含目录条目,有时则不包含。例如给出以下结构
\nfolder1/\n\xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 file1\n
Run Code Online (Sandbox Code Playgroud)\n我发现通过以下方式列出内容时给出以下不同输出的文件unzip -lv file.zip
:
Length Method Size Cmpr Date Time CRC-32 Name\n-------- ------ ------- ---- ---------- ----- -------- ----\n 5 Stored 5 0% 2023-04-20 13:54 3bb935c6 folder1/file1\n-------- ------- --- -------\n 5 5 0% 1 file\n
Run Code Online (Sandbox Code Playgroud)\n Length Method Size Cmpr Date Time CRC-32 Name\n-------- ------ ------- ---- ---------- ----- -------- ----\n 0 Stored 0 0% 2023-04-20 13:54 00000000 folder1/\n 5 Stored 5 0% 2023-04-20 13:54 3bb935c6 folder1/file1\n-------- ------- --- …
Run Code Online (Sandbox Code Playgroud) 我已在 KVM 下的虚拟机上安装了 Alpine r3.17。我想安装sudo
工具。
# su -
# apk update
...
OKL 4994 distinct packages available
# apk add sudo
ERROR: unable to select packages:
sudo (no such package):
required by: world[sudo]
Run Code Online (Sandbox Code Playgroud)
检查 Alpine 网站后,我看到sudo
是一个有效的包:
适用于版本 3.17。我也在网上看到了 r3.16 的类似问题,所以我认为这不是一个新问题。是的,对于虚拟机,而不是容器,我确实希望在关键机器上使用 sudo。
但还是apk
没有找到。到目前为止我看过的所有地方都显示安装命令,例如:
# apk add sudo
Run Code Online (Sandbox Code Playgroud)
例如:
sudo
用法,但不显示安装方式。我想知道“世界”是否相关,例如:“ required by: world[sudo] …
给定条目格式的输入,可能具有重复的键,例如
[
{"key": "a", "value": 0},
{"key": "a", "value": 1},
{"key": "a", "value": 2},
{"key": "b", "value": 3},
{"key": "b", "value": 4},
{"key": "b", "value": 5}
]
Run Code Online (Sandbox Code Playgroud)
我想生产
{"a": [0, 1, 2], "b": [3, 4, 5]}
Run Code Online (Sandbox Code Playgroud)
即,针对每个唯一键将具有相同键的所有值收集在数组中。
我怎样才能做到这一点jq
?
如何才能让睡眠时间小于0.001s/1ms?
如果我使用这个,它会显示它只休眠 1 毫秒。可以少睡一点吗?
$ time sleep 0.00001
sleep 0.00001 0,00s user 0,00s system 79% cpu 0,002 total
Run Code Online (Sandbox Code Playgroud) 我的输入文件是:
$ cat -e myfile.txt
999a bcd efgh555$
8 z 7 $
1 xx xx xx 48 $
Run Code Online (Sandbox Code Playgroud)
我需要一个列中没有尾随空格的 CSV:
999,a bcd efgh,555
8,z,7
1,xx xx xx,48
Run Code Online (Sandbox Code Playgroud)
到目前为止,我成功地在需要的地方添加了昏迷:
$ gawk '$1=$1' FIELDWIDTHS="3 10 3" OFS=, myfile.txt
999,a bcd efgh,555
8 ,z ,7
1 ,xx xx xx ,48
Run Code Online (Sandbox Code Playgroud)
我怎样才能删除尾随空格?
编辑:数据中可能已经有逗号,所以我需要:(i)将字段用双引号括起来,(ii)使用\"
(或""
根据RFC 4180)转义字段中可能已经存在的双引号。例如,a,aab"bbccc
-> "a,aa","b\"bb","ccc"
。
gawk
(不仅awk
)perl
)。gawk ... | sed ...
),因为我有很多大文件要处理。FIELDWIDTHS
自动计算。