알파벳을 제외한 마지막 문자를 제거하려고 합니다.
support.help1.com,,
support.help1.com.
support.help1.com9
support.help1.com*
support.help1.com@@
support.help1.com##
support.help1.com%%
support.help1.com^
support.help1.com
support.help1.com,
support.help1.com-
내 출력은 다음과 같습니다.
support.help1.com
support.help1.com
support.help1.com
support.help1.com
support.help1.com
support.help1.com
support.help1.com
support.help1.com
support.help1.com
support.help1.com
support.help1.com
답변1
sed도 도움이 될 수 있습니다.
command | sed 's/[^a-Z]*$//g'
# create the example output
$ echo "support.help1.com,,
support.help1.com.
support.help1.com9
support.help1.com*
support.help1.com@@
support.help1.com##
support.help1.com%%
support.help1.com^
support.help1.com
support.help1.com,
support.help1.com-" > trailexample.txt
# now edit this stream
# something like $ command_output | sed
$ cat trailexample.txt | sed 's/[^a-Z]*$//g'
support.help1.com
support.help1.com
support.help1.com
support.help1.com
support.help1.com
support.help1.com
support.help1.com
support.help1.com
support.help1.com
support.help1.com
support.help1.com
# explanation
# sed (replace) 's/this/by-this/g' :: sed 's/[^a-Z]*$//g'
# s : substitution command, we want to substitute strings
# The 'this' [^a-Z]*$ : regexp pattern
# ^ mean not
# a-Z means all aLphBetiCaL chars
# []* any number of what is in brackets
# $ means end of line
# So the 'this' is 'any number of consecutive non-alphabetical chars before end of line'
# And the 'by-this' is empty, nothing, nada, void :: //
# g : global substitution command, means do the replacement for all occurrences
답변2
정규식을 사용할 수 있는 경우 각 명령을 로드하고 아래 정규식을 사용하세요.여기):
^(http:\/\/www\.|https:\/\/www\.|http:\/\/|https:\/\/)?[a-z0-9]+([\-\.]{1}[a-z0-9]+)*\.[a-z]{2,5}(:[0-9]{1,5})?(\/.*)?$
이 정규식은 http
/ 가 포함된 URL을 허용합니다 https
. 이를 사용하여 URL이 유효한지 확인하고, 그렇지 않은 경우 마지막 문자를 제거하여 문자열을 로드하세요. 이것을 사용할 수 있습니다해결 방법그에 대한:
string="string.help1.com&&"
foo=string
while [ !regex(foo) ]; do
foo=${foo%?}
done
print foo
NB: regex(foo)
문자열을 가져온 함수일 뿐이며, True
정규식이 정상이면 반환하고, False
다른 경우에는 반환합니다.
NB2: 내 구문이 정확하지 않을 수도 있지만 팁을 드리기 위한 것입니다.
답변3
이를 위해 Perl one-liner를 사용할 수 있습니다.
perl -pne 's/[^a-zA-Z]*$/\n/g' input.txt
이는 linewise의 내용을 읽고 줄 끝의 input.txt
모든 알파벳이 아닌 문자( )를 줄 바꿈( ) 으로 바꿉니다.[^a-zA-Z]*$
\n
답변4
고전적인 정규식 검색 및 바꾸기입니다.https://regex101.com/r/gRiUTc/2
쉘을 통해 사용할 수 있습니다
<input sed -r 's/(\W+|[0-9]+)$//g'