如何在文本文件中找到损坏的字符行(例如 \xef\xbf\xbd、\xc3\x83\xc5\xb8、\xc3\x83\xc2\xb8 ...)?
\n\n(损坏的字符列表在这里)
\n我刚开始使用 sed,但很快就爱上了它,因为它在自动化方面具有普遍的灵活性。我希望每次部署新系统时都运行具有各种安全控制的脚本,其中一部分需要我锁定 GRUB。我希望从 GRUB 菜单中解锁一般的 Ubuntu 选项,这样任何人都可以在没有密码的情况下使用它,同时保护其他所有内容的密码。
话虽如此,我希望在 /boot/grub/grub.cfg 文件中搜索特定行并将 --unrestricted 添加到该选项。(我们只使用 16.04.03 所以理论上所有系统在安装时都会有相同的文件)
文件中的行是:
menuentry 'Ubuntu' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-simple-2aa7ed2c-67a7-42d5-84fb-0ddab74c5dd0' {
Run Code Online (Sandbox Code Playgroud)
我希望它看起来像:
menuentry 'Ubuntu' --class ubuntu --class gnu-linux --class gnu --class os --unrestricted $menuentry_id_option 'gnulinux-simple-2aa7ed2c-67a7-42d5-84fb-0ddab74c5dd0' {
Run Code Online (Sandbox Code Playgroud)
我知道 sed -i 用于就地编辑, s/ 应该搜索。但除此之外,我对这里的语法迷失了,让它真正做我们需要的。据我所知,需要 --unrestricted 的定位,因为我相信如果我们不必进行如此长时间的搜索会更容易,但我再次对 sed 感到陌生并且不确定。有人可以帮我插入这个 sed 吗?最好也向我解释为什么不同的语法会出现在它的位置,所以我知道未来。
我有一个名为a_b-c-d-e-f.txt. 我想采用当前名称并交换破折号和下划线,使其变为a-b_c_d_e_f.txt.
我的直觉告诉我尝试rename或tr,但我遇到了这个问题。这是我目前的尝试
#!/bin/bash
for i in *.txt; do
[ -f "$i" ] || break
newFile=$(echo "$i" | tr '-' '_')
cp "$i" $newFile
done
Run Code Online (Sandbox Code Playgroud)
有了这个,我结束了
a_b_c_d_e_f.txt
Run Code Online (Sandbox Code Playgroud)
这是 ab 之间不应该改变的部分。此外,破折号不一定总是在文件名中的那个位置。例如,它可能看起来像
a-b-c_d-e-f.txt
Run Code Online (Sandbox Code Playgroud)
或者像这样的任何组合。我希望他们翻转不管他们在名字中的位置。
我有一长串期刊标题中常见单词的缩写。在列表中,完整单词后面跟着其缩写。例如:
我想将列表变成 Markdown 表,如下所示:
| 单词 | 缩写 |
|---|---|
| 行政 | 行政。 |
| 应用 | 应用。 |
问题是,手动完成此操作将花费很长时间。所以,我正在寻找一些方法来更快地做到这一点。如果有帮助的话,所有缩写形式都以句点 (.) 结尾。
我在网上查看过但找不到任何与此相关的内容。这就是我在这里问的原因。有什么帮助吗?
我有一个文件input.xml,其中包含一行:<exciton lambda="1" fix="hole"/>
在该行中,我想将 1 替换为 2 但我不能仅用作1关键字,因为同一文件中还有“1”的其他实例,因此我必须使用关键字lambda="1"
我正在尝试使用 sed 命令,如下所示:
sed -i "s/lambda="1"/lambda="$value"/g" input.xml
Run Code Online (Sandbox Code Playgroud)
但它不起作用,任何人都可以帮忙。
我想.odt为选择区域中的每个字符添加星号来遮盖文档的某些部分。我想使用 LibreOffice 中的工具应该可以find and replace。只需知道如何告诉它找到每个字符,例如通配符明星字符。
我想将文本文件转换为 CSV 格式。
以下是该文件的摘录:
{"Outdated":false,"Watt":233,"Timestamp":1669647142,"A_Plus":6523.896,"A_Plus_HT":4494.82,"A_Plus_NT":2029.076,"A_Minus":8841.63}
{"Outdated":false,"Watt":235,"Timestamp":1669647152,"A_Plus":6523.896,"A_Plus_HT":4494.82,"A_Plus_NT":2029.076,"A_Minus":8841.63}
{"Outdated":false,"Watt":235,"Timestamp":1669647596,"A_Plus":6523.896,"A_Plus_HT":4494.82,"A_Plus_NT":2029.076,"A_Minus":8841.63}
{"Outdated":false,"Watt":233,"Timestamp":1669651191,"A_Plus":6524.496,"A_Plus_HT":4495.42,"A_Plus_NT":2029.076,"A_Minus":8841.63}
{"Outdated":false,"Watt":276,"Timestamp":1669654797,"A_Plus":6524.816,"A_Plus_HT":4495.74,"A_Plus_NT":2029.076,"A_Minus":8841.63}
{"Outdated":false,"Watt":437,"Timestamp":1669658393,"A_Plus":6525.901,"A_Plus_HT":4496.825,"A_Plus_NT":2029.076,"A_Minus":8841.63}
{"Outdated":false,"Watt":362,"Timestamp":1669661992,"A_Plus":6526.732,"A_Plus_HT":4497.656,"A_Plus_NT":2029.076,"A_Minus":8841.63}
{"Outdated":false,"Watt":471,"Timestamp":1669665603,"A_Plus":6527.062,"A_Plus_HT":4497.986,"A_Plus_NT":2029.076,"A_Minus":8841.63}
Run Code Online (Sandbox Code Playgroud)
该结构类似于 JSON 文件,但不幸的是结构并不完全匹配。我已经使用过这个工具(https://github.com/alingse/jsoncsv),但不幸的是,由于结构错误,我收到了错误消息。
如何将其转换为 CSV 文件?
感谢您的帮助!
如何修改文本文件以通过 1 个命令执行以下操作?
我有一个名为Errors.txt以下 3 行的文本文件:
Error in File /Test1/A.png
Error in File /Test2/B.jpg
Error in File /Test3/C.jpg
Run Code Online (Sandbox Code Playgroud)
我想要一个命令来执行以下操作:
"/mnt/HD."在每行末尾。webp"。mv在每行的开头。我希望结果是这样的:
mv "/mnt/HD/Test1/A.png" "/mnt/HD/Test1/A.webp"
mv "/mnt/HD/Test2/B.jpg" "/mnt/HD/Test2/B.webp"
mv "/mnt/HD/Test3/C.jpg" "/mnt/HD/Test3/C.webp"
Run Code Online (Sandbox Code Playgroud) 我发现了很多非常相似的问题,但不完全是这个。我有一个包含以下内容的文本文件(无重复,每行固定 4 个字符):
A1234
G1234
$1234
M1234
Run Code Online (Sandbox Code Playgroud)
我正在尝试使用 grep 搜索以字符 $char 开头的行,该行是通过使用 $char 定义搜索项输入的,并将其后面的四个数字分配给 $numbr。它看起来是这样的:
numbr=`grep ^"${char}" file.txt | cut -c 2,3,4,5`
Run Code Online (Sandbox Code Playgroud)
这适用于我需要的任何字符,但美元符号除外,美元符号会使 $numbr 为空。
输入字符 $char 预先定义如下,如果有帮助的话:
char="`dd if=text.txt ibs=1 skip=$skipcount count=1`"
Run Code Online (Sandbox Code Playgroud)
($skipcount 是一个整数)
我尝试了使用和不使用 -E 标志,以及我能找到的转义 $char 值的各种方法。我不需要专门使用 grep,到目前为止我只是使用它取得了最大的成功。
我已经坚持这个问题有一段时间了,所以任何帮助将不胜感激。如果我成功复制了一篇文章,我深表歉意,感谢所有在这里做出贡献的人,我在一两分钟内找到了几乎所有问题的解决方案。
编辑:对我不小心删除了评论的人表示抱歉。要点是他建议回声和管道,类似这样的东西(我认为这是部分的,我需要填写其余的):
echo "${char}" | grep '^\$'
Run Code Online (Sandbox Code Playgroud)
不为我工作。我也不够清楚 - 在 .txt 中的每个字符串(例如 A1234)中,只有第一个字符被分配给 $char。$char 之后的 4 个数字是我需要分配给 $numbr 的内容,并且该字符串可以出现在 .txt 文件中的任何行。每行上不会有其他字节。
我确定我已经看到有关如何执行此操作的说明,不幸的是,这是几个月前的事情,并且已经忘记了。
预先感谢任何回答的人。
text-processing ×10
command-line ×7
bash ×2
sed ×2
16.04 ×1
batch-rename ×1
csv ×1
grep ×1
grub2 ×1
json ×1
libreoffice ×1
markdown ×1
odt ×1
scripts ×1