/fi/a
다음에 무엇을할지?
sudo sed -i.bak '/fi/a #xrdp multiple users configuration \n xfce-session \n' /etc/xrdp/startwm.sh
"fi"가 포함된 줄을 찾아 해당 문자열을 다음 줄에 쓰는 것 같습니다. 불행히도 "fi"만 대상으로 하는 것처럼 보이지만 "profile"이라는 단어가 포함된 해당 파일의 행에도 적용됩니다.
이 명령은 여기와 다른 여러 곳에서 권장됩니다.
https://medium.com/@vivekteega/how-to-setup-an-xrdp-server-on-ubuntu-18-04-89f7e205bd4e
답변1
이 명령은 당신이 말한 것과 정확히 일치합니다. 각 항목에 문자열을 추가합니다.첫 번째fi
한 줄로 나타납니다 . 하지만 보는 것만으로 fi
도 "프로"에도 어울립니다필리핀 제도르" 혹은 "필리핀 제도저녁" 또는 "비리필리핀 제도할 수 있다" 또는 기타 포함 fi
.
이를 방지하려면 단어 경계( )에서만 일치하도록 지정할 수 있습니다 \b
. GNU의 경우 sed
(아마도 다른 것, \b
상대적으로 이식 가능함):
$ cat file
profile
finite
verifiable
foo bar fi
$ $ sed '/\bfi\b/a #xrdp multiple users configuration \n xfce-session \n' file
profile
finite
verifiable
foo bar fi
#xrdp multiple users configuration
xfce-session
fi
보시다시피 독립형 버전만 변경되었습니다. 따라서 원래 명령을 다음과 같이 변경할 수 있습니다.
sudo sed -i.bak '/\bfi\b/a #xrdp multiple users configuration \n xfce-session \n' /etc/xrdp/startwm.sh
sed
버전을 알 수 없지만 \b
지원되는 경우 -E
다음을 수행할 수도 있습니다.
sed -E '/(^| )fi( |$)/a #xrdp multiple users configuration \n xfce-session \n' file
그러나 내가 아는 한, 대부분의 sed 구현은 이것을 처리할 수 없으므로 \n
거의 확실하게 GNU sed가 필요할 것입니다.
답변2
fi
한 줄에서 a를 일치시키 려면 ^
(줄 시작) 및 (줄 끝)을 사용하여 $
고정 할 수 있습니다. \n
문자열 앞뒤의 불필요한 공백 문자를 제거할 수도 있습니다.
sudo sed -i.bak '/^fi$/a #xrdp multiple users configuration\nxfce-session\n' /etc/xrdp/startwm.sh