标签: text-processing

如何找到文本文件中损坏的字符?

如何在文本文件中找到损坏的字符行(例如 \xef\xbf\xbd、\xc3\x83\xc5\xb8、\xc3\x83\xc2\xb8 ...)?

\n\n

(损坏的字符列表在这里

\n

text-processing

4
推荐指数
1
解决办法
1万
查看次数

sed 更新 GRUB 文件的用法

我刚开始使用 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 吗?最好也向我解释为什么不同的语法会出现在它的位置,所以我知道未来。

grub2 scripts sed text-processing 16.04

4
推荐指数
1
解决办法
1087
查看次数

将文件名中的一个字符与另一个交换

我有一个名为a_b-c-d-e-f.txt. 我想采用当前名称并交换破折号和下划线,使其变为a-b_c_d_e_f.txt.

我的直觉告诉我尝试renametr,但我遇到了这个问题。这是我目前的尝试

#!/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)

或者像这样的任何组合。我希望他们翻转不管他们在名字中的位置。

command-line bash batch-rename text-processing

4
推荐指数
2
解决办法
636
查看次数

如何从项目交替出现在每列中的列表中制作两列的 Markdown 表格?

我有一长串期刊标题中常见单词的缩写。在列表中,完整单词后面跟着其缩写。例如:

  • 行政
  • 行政。
  • 应用
  • 应用。
  • 行政的
  • 管理。
  • 近似
  • 大约。

我想将列表变成 Markdown 表,如下所示:

单词 缩写
行政 行政。
应用 应用。

问题是,手动完成此操作将花费很长时间。所以,我正在寻找一些方法来更快地做到这一点。如果有帮助的话,所有缩写形式都以句点 (.) 结尾。

我在网上查看过但找不到任何与此相关的内容。这就是我在这里问的原因。有什么帮助吗?

command-line text-processing markdown

4
推荐指数
1
解决办法
1064
查看次数

将 sed 与双引号内的变量一起使用

我有一个文件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)

但它不起作用,任何人都可以帮忙。

command-line sed text-processing

4
推荐指数
1
解决办法
5440
查看次数

(LibreOffice) 将所选内容中的每个字符替换为 *

我想.odt为选择区域中的每个字符添加星号来遮盖文档的某些部分。我想使用 LibreOffice 中的工具应该可以find and replace。只需知道如何告诉它找到每个字符,例如通配符明星字符。

libreoffice text-processing odt

4
推荐指数
1
解决办法
1117
查看次数

在 shell 上将文本文件转换为 CSV

我想将文本文件转换为 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 文件?

感谢您的帮助!

command-line csv text-processing json

4
推荐指数
3
解决办法
3246
查看次数

使用命令修改文本文件

如何修改文本文件以通过 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)

我想要一个命令来执行以下操作:

  1. 找到每个“文件中的错误”并将其替换为"/mnt/HD.
  2. 添加"在每行末尾。
  3. 复制每一行,添加一个空格并粘贴该行
  4. 将每行的最后 4 个字符替换为webp"
  5. 添加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)

command-line text-processing

4
推荐指数
1
解决办法
377
查看次数

使用 grep 搜索以美元符号变量开头的行

我发现了很多非常相似的问题,但不完全是这个。我有一个包含以下内容的文本文件(无重复,每行固定 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 文件中的任何行。每行上不会有其他字节。

command-line bash special-characters grep text-processing

4
推荐指数
1
解决办法
679
查看次数

如何通过终端自动在 .txt 文件中安装程序列表

我确定我已经看到有关如何执行此操作的说明,不幸的是,这是几个月前的事情,并且已经忘记了。

预先感谢任何回答的人。

command-line text-processing software-installation

3
推荐指数
1
解决办法
9350
查看次数