在linux中使用awk把文件定长转换成分隔符,全部是空格变成一个空格显示。

然而,该命令使用Linux下的工具来处理输入字符串。

1 . echo "aaabbb ccc ddd":首先使用echo命令返回字符串“aaabbb ccc ddd”。

2 |:管道符号,echo 命令的输出传递给 sed 命令。

3 sed -e 's /.../.../g':sed 命令用于流编辑。
这里的-e选项表示后面跟着一个脚本。

4 s/.\{3 \}/\1 |/g:这是第一个命令,但不是脚本。

s/.../.../:但是替换命令。

.\{3 \}:匹配连续出现 3 次的每个字符 (.) (\{3 \})。

\1 :引用第一个匹配的子串,这里连续三个字符。

|:在等号后面添加竖线。

g:全局存储,存储所有输入。

5 -e 's/ //g':第二个命令,但脚本。

s//g:删除所有空格。

6 -e 的/||/| |/g':第三个脚本命令。

s/||/| |/g:用一个竖线和一个空格替换两个竖线之间的空格。

7 -e 's/|$//':第四个但脚本命令。

s/|$//':删除输入字符串末尾的竖线。
最后,该命令会将输入字符串“aaabbb ccc ddd”处理为“aaa|bbb|ccc|ddd”。
三个人之间各插一根管子,绳子末端的所有空间和管子都被移除。

Linux命令(44)——expand命令

记得有一次在公司的一个小项目中发现了一个奇怪的bug。
代码中充满了制表符和空格的混合缩进,使其看起来一团糟。
我尝试用不同的编辑器打开该文件,但发现缩进不一致,导致显示乱码。
当时我突然想到,如果这些tab的宽度能够统一一下就好了。

所以我打开终端并输入命令expand -t4 file.txt。
该命令的含义是将file.txt文件中的所有制表符替换为4 个空格。
这使得文件中的代码看起来更加清晰并且错误消失了。
我看着屏幕上清晰的代码,突然想到:如果每个团队都能统一代码缩进,代码评审的工作是不是会容易很多?等等,还有一件事:我记得以前看到有人使用 Expand 来处理日志文件,但我不知道它的效果如何。

正则表达式如何匹配空白字符?各种空白符解析

oh 空格字符很多,比如键盘上常见的空格;它的ASCII码是3 2 还有一个制表符,一般用来表示,ASCII码是9 之后是换行符,Unix/Linux和macOS上的n; rn 使用 Windows,r 使用较旧的 Mac 系统。
还有全角空格,常用于网页或文档中。
Unicode 编码为 u00A0。

如果你想匹配所有这些空字符,请使用 s。
例如Hellos+World就是HelloWorld;与 HellotWorld 和 HellonWorld 相当。
但是,在某些旧版本的 Perl 中,s 不包含全角空格 u00A0,因此您必须自己添加它。

如果要匹配特定的空白字符,例如空格和制表符,请使用 [t]。
空格 如果要匹配制表符和换行符,请使用 [tnr]。
对于全角空格,直接写u00A0或者直接使用全角空格字符。

例如,如果您想将 HTML 中的连续空格和换行符替换为单个空格;正则表达式必须写为[tnr]+。

实际应用中需要考虑的因素有很多。
例如,Web 抓取或 Word 提取内容可能包含 s 无法识别的维度。
必须显式添加 u00A0。
此外,换行符在不同的操作系统上可能会出现问题。
Linux正则表达式可能不适用于 Windows。
您必须使用 [rn] 来替换它们。
另外,如果要将多个字符组合在一个空格中,以使文本流畅运行;使用s+来匹配。

掌握了这些要点后,文本匹配和清理工作就会变得更加容易。
说实话,当时我不太明白这些细节,但现在用起来更容易了。