如何删除单词之间的多个空格?

pal*_*sd1 1 bash output

grep include /etc/nginx/nginx.conf
Run Code Online (Sandbox Code Playgroud)

输出:

include /etc/nginx/modules-enabled/*.conf;
    include             mime.types;
        include /etc/nginx/conf.d/*.conf;
        include /etc/nginx/sites-enabled/*;
Run Code Online (Sandbox Code Playgroud)

期望的输出:

include /etc/nginx/modules-enabled/*.conf;
include mime.types;
include /etc/nginx/conf.d/*.conf;
include /etc/nginx/sites-enabled/*;
Run Code Online (Sandbox Code Playgroud)

Sté*_*las 6

awk '/include/ {$1 = $1; print}' < your-file\n
Run Code Online (Sandbox Code Playgroud)\n

会那么做。

\n

通过将某些内容分配给$1,强制awk通过将字段(默认情况下由空格分隔(至少是空格和制表符,可能其他取决于区域设置和 awk 实现))与OFS(默认情况下是空格)来重建记录。

\n

等价sed的:

\n
sed -E '/include/!d; s/[[:space:]]+/ /g; s/^ //; s/ $//' < your-file\n
Run Code Online (Sandbox Code Playgroud)\n

[[:space:]]其中[[:blank:]]至少包括空格和制表符;[[:space:]]还包括垂直间距字符\xc2\xb9,如果文件具有 MSDOS CRLF 行结尾,则这在这里可能很有用,因为它将删除行末尾的那些虚假 CR。

\n
\n

\xc2\xb9 如垂直制表符、换页符等不应出现在输入中的换行符、记录处理中不会出现的行分隔符,awk依次处理awk每一行内容

\n