grep include /etc/nginx/nginx.conf
산출:
include /etc/nginx/modules-enabled/*.conf;
include mime.types;
include /etc/nginx/conf.d/*.conf;
include /etc/nginx/sites-enabled/*;
원하는 출력:
include /etc/nginx/modules-enabled/*.conf;
include mime.types;
include /etc/nginx/conf.d/*.conf;
include /etc/nginx/sites-enabled/*;
답변1
awk '/include/ {$1 = $1; print}' < your-file
그렇게 할 것입니다.
(기본적으로 공백)을 사용하여 공백(기본적으로 공백)으로 구분된 항목(최소한 공백과 탭, 로케일 및 awk 구현에 따라 다른 항목)을 할당하여 레코드를 강제로 재구성 $1
합니다 .awk
OFS
동등한 sed
:
sed -E '/include/!d; s/[[:space:]]+/ /g; s/^ //; s/ $//' < your-file
[[:space:]]
[[:blank:]]
여기에는 최소한 공백과 탭이 포함됩니다. [[:space:]]
또한 세로 간격 문자 1도 포함됩니다. 이는 파일에 MSDOS CRLF 줄 끝이 있는 경우 줄 끝에 있는 가짜 CR을 제거하므로 여기서 유용할 수 있습니다.
awk
1 예: 수직 탭, 폼 피드(입력에 표시되지 않아야 함), 줄 바꿈, 줄 구분 기호(로깅 프로세스 에 표시되지 않음 awk
)콘텐츠각철사차례로
답변2
sed를 사용하면 이 작업을 수행하는 것이 간단합니다.
% sed -e 's/^ *//g' -e 's/ */ /g' file.txt
include /etc/nginx/modules-enabled/*.conf;
include mime.types;
include /etc/nginx/conf.d/*.conf;
include /etc/nginx/sites-enabled/*;
s/pattern/replacement/
찾기 및 바꾸기를 수행한다는 ^
것은 줄의 시작, *
임의의 공백 수, *
공백 뒤에 임의의 공백 수를 의미합니다. 마지막은 g
모든 일치 항목을 대체하는 "전역"을 나타냅니다.
[[:space:]]
여전히 탭이 있으면 공백을 다음으로 바꾸세요.
% sed -e 's/^[[:space:]]*//g' -e 's/[[:space:]][[:space:]]*/ /g' file.txt
답변3
Perl을 사용할 수 있는 경우:
#!/usr/bin/perl
use v5.30;
use warnings;
while (<DATA>){
$_ =~ s/[[:blank:]]/ /g; #replace any number of subsequent space with single space except newline
$_ =~ s/\s//; #remove single space at the beginning of each line
print("$_");
}
__DATA__
include /etc/nginx/modules-enabled/*.conf;
include mime.types;
include /etc/nginx/conf.d/*.conf;
include /etc/nginx/sites-enabled/*;
명령줄에서 한 줄 버전을 사용해 보려면 다음을 수행하세요.
perl -nE '{$_ =~ s/[[:blank:]]+/ /g; $_ =~s/^\s//; print $_}' file.txt
답변4
grep include /etc/nginx/nginx.conf | awk -F ' ' '{print $2}' | sort | uniq