sed를 사용하여 문자열의 첫 부분을 제거하십시오. 어떻게 얻습니까? randomcollege-nt\user90 이에: user90 사용하여 sed?

이것을 어떻게 얻습니까?

randomcollege-nt\user90

이에:

user90

사용하여 sed?



답변

나는 간단한 것을 사용 grep하여 찾을 것이다 user90:

$ echo "randomcollege-nt\user90" | grep -o user90
user90

user90이 일정하지 않은 경우 다음 명령을 선호하십시오.

$ echo "randomcollege-nt\user90" | grep -oP '(?<=randomcollege-nt\\)\w+'
user90

마지막으로 sed파일을 편집하는 데 사용 합니다.

$ sed -ri 's/randomcollege-nt\\(user[0-9]+)/\1/' my_file

또는 가능한 모든 사용자 계정과 일치 시키려면

$ sed -ri 's/randomcollege-nt\\(\w+)/\1/' my_file

답변

domain\usernameWindows에서 문자열 에서 사용자 이름을 추출하기 위해 일부 텍스트를 구문 분석하고 있습니다. 위의 답변 중 대부분은 특정 예제 문자열 만 다루고 있습니다.

이 작업을 수행하는 가장 좋은 방법은 sed에서 정규식을 사용하여 이후에 나오는 것을 추출하는 것 \입니다. 방법은 다음과 같습니다.

sed 's|.*\\\(.*\)|\1|'

.*백 슬래시가 될 때까지 모든 항목 ( ) 과 일치 합니다 (여기서 우리는 이스케이프하므로 \\). 백 슬래시 ( .*) 뒤의 모든 항목을 일치 시키지만 캡처 그룹 (즉, 주위에 대괄호를 묶어야 함)도 탈출해야합니다. 그들 \(.*\)). 이제 \문자열에서 캡처 그룹으로 뒤에 오는 모든 것이 있으므로을 참조하여 인쇄합니다 \1.

반드시 위의 sed명령을 도메인 이름과 함께 사용할 수 있습니다 randomcollege-nt.

$ echo "randomcollege-nt\user90" | sed 's|.*\\\(.*\)|\1|'
user90

$ echo "domain\username" | sed 's|.*\\\(.*\)|\1|'
username

$ echo "anydomainname\roboman1723" | sed 's|.*\\\(.*\)|\1|'
roboman1723

답변

다른 sed:

$ echo "randomcollege-nt\user90" | LC_ALL=C sed -e 's/.*\\//'
user90

또는 POSIXly :

$ a='randomcollege-nt\user90'
$ printf '%s\n' "${a##*\\}"
user90

답변

나는 당신이 sed를 사용하고 싶다는 것을 알고 있지만 다른 것을 사용할 것입니다 …

echo "randomcollege-nt\user90" | cut -d'\' -f2

답변

이것이 질문입니까?

$ echo randomcollege-nt\user90| sed -e s,randomcollege-nt\,,
user90

스팅 randomcollege-nt가 일정하지 않은 경우 위 / 아래의 awk 명령을 사용하십시오.


답변

대신 ‘awk’를 사용하여 “user90″을 필터링하십시오.

echo "randomcollege-nt\user90" | awk -F\\ {'print $2'}

답변

이 간단한 grep 명령은 작업을 수행합니다.

$ echo 'randomcollege-nt\user90' | grep -oP '[^\\]*$'
user90