4행에서 19823 뒤에 있는 "K" 문자를 바꾸고 싶지만 그 뒤의 "K" 문자는 바꾸고 싶지 않습니다.
19822SOL OW60021 7.173
19822SOL HW160022 7.230
19822SOL HW260023 7.124
19823K K60024 8.427
따라서 새 파일은 다음과 같아야 합니다.
19822SOL OW60021 7.173
19822SOL HW160022 7.230
19822SOL HW260023 7.124
19823exc K60024 8.427
현재 나는 sed 명령을 사용하여 4행의 K를 ex로 바꾸는 방법을 알고 있습니다.
sed -i "4s/K/exc/g" <newfile>
하지만 선택할 열을 지정하는 방법을 모르겠습니다.
답변1
특정 항목에 관한 것이라면 플래그 는 한 번만 교체되므로 플래그 K
를 제거해 g
도 괜찮습니다 . 그러므로:sed
K
sed -i "4s/K/exc/" <newfile>
즉, 4행의 첫 번째 항목을 대체합니다 K
.exc
답변2
첫 번째 항목을 원하면 플래그 K
를 제거하세요 g
.
sed -i '4s/K/exc/' <newfile>
두 번째, 세 번째 등을 바꾸려면 대신 , K
를 사용하십시오 .2
3
4
g
sed -i '4s/K/exc/2' <newfile>
sed -i '4s/K/exc/3' <newfile>
K
세 번째부터 마지막까지 모든 s를 교체하려는 경우 (GNU sed에서만 지원됨):
echo 'KKKKKK' | sed s/K/E/3g
KKEEEE
그런데 "
셸 변수, 명령 확장 등을 전달하는 문자열에 실제로 삽입하려는 경우가 아니면 큰따옴표( )를 사용하지 마십시오 sed
.