나는 매우 큰 LDAP 디렉토리에서 전체 텍스트 검색을 수행하기 위해 slapcat을 사용하고 있습니다. 어디를 봐야 할지 모를 때 내가 찾고 있는 것을 일치시키는 것이 더 쉽기 때문입니다.
문제는 포장이 너무 길다는 것
slapcat -v | grep -A 1 "some search string"
somelongvar::linesoftesttext12345667890987654321234567887654321234567897654321
wraps like this
답변1
조금 늦었을 수도 있지만 man slapcat
다음과 같습니다.
OPTIONS
-o option[=value]
Specify an option with a(n optional) value. Possible generic options/values are:
syslog=<subsystems> (see `-s' in slapd(8))
syslog-level=<level> (see `-S' in slapd(8))
syslog-user=<user> (see `-l' in slapd(8))
ldif-wrap={no|<n>}
n is the number of columns allowed for the LDIF output
(n equal to 0 uses the default, corresponding to 78).
The minimum is 2, leaving space for one character and one
continuation character.
Use no for no wrap.
slapcat -o ldif-wrap=no ...
당신이 원하는 것도 마찬가지입니다.
답변2
이 답변에서 해결책을 찾았습니다.https://stackoverflow.com/a/10002241/619760
\n
이는 a가 뒤에 오는 줄의 끝과 일치 하고 줄을 연결합니다.
slapcat -v | grep -A 1 "some search string" | sed '$!N;s/\n //;P;D'
somelongvar::linesoftesttext12345667890987654321234567887654321234567897654321wraps like this
답변3
사용행복하다(이전 Perl_6)
~$ raku -ne 'if .chars > 78 {put $_ ~ ($_ with get) } else { put $_ };' file
slapcat
출력 뿐만 아니라 해당 파일에 대해서도 이 문제를 재현할 수 있습니다 . 아래에서는 문자 "잘린 삼각형" 파일을 생성합니다 tri_N-to-Z.txt
.
~$ raku -e 'for (0..12) -> $i { $_.[0..(25-$i)].join.put given "\x0061".."\x07A"};' > tri_N-to-Z.txt
여기서는 20자로 줄 바꿈합니다(7줄 줄 바꿈)...
입력 예:
~$ cat tri_N-to-Z.txt | raku -pe 's/^ (.**20) /{"$0\n"}/;' > tri_N-to-Z_wrapped.txt
~$ cat tri_N-to-Z_wrapped.txt
abcdefghijklmnopqrst
uvwxyz
abcdefghijklmnopqrst
uvwxy
abcdefghijklmnopqrst
uvwx
abcdefghijklmnopqrst
uvw
abcdefghijklmnopqrst
uv
abcdefghijklmnopqrst
u
abcdefghijklmnopqrst
abcdefghijklmnopqrs
abcdefghijklmnopqr
abcdefghijklmnopq
abcdefghijklmnop
abcdefghijklmno
abcdefghijklmn
출력 예(원래 잘린 삼각형 다시 만들기):
~$ raku -ne 'if .chars > 19 {put $_ ~ ($_ with get) } else { put $_ };' tri_N-to-Z_wrapped.txt
abcdefghijklmnopqrstuvwxyz
abcdefghijklmnopqrstuvwxy
abcdefghijklmnopqrstuvwx
abcdefghijklmnopqrstuvw
abcdefghijklmnopqrstuv
abcdefghijklmnopqrstu
abcdefghijklmnopqrst
abcdefghijklmnopqrs
abcdefghijklmnopqr
abcdefghijklmnopq
abcdefghijklmnop
abcdefghijklmno
abcdefghijklmn
참고: 코드는 기존 줄(예: 파일 끝)에서 호출되는지 ($_ with get)
확인하기 위한 것입니다 ( 정의를 확인하세요).get
with