test.txt
다음과 같은 이름의 파일이 있다고 가정합니다.
you wel come
how nice
what do ing
단어 사이에 공백이 있는 경우 두 번째 열에 하이픈을 추가하려면 어떻게 해야 합니까?
답변1
각 줄의 두 번째 공백 문자를 다음으로 바꾸려면 -
:
$ sed 's/ /-/2' test.txt
you wel-come
how nice
what do-ing
첫 번째 줄을 제외한 모든 줄의 모든 공백 문자를 GNU로 바꾸려면 다음을 수행하세요 sed
.
sed 's/ /-/2g'
각 sed에 대해 다음을 수행합니다.
sed -e :1 -e 's/ /-/2;t1'
-
각 줄의 다른 모든 공백을 다음으로 바꾸려면:
sed 's/\( [^ ]*\) /\1-/g'
답변2
read
명령에 두 개의 변수 이름을 사용 합니다 . 이는 첫 번째 단어를 첫 번째 변수에 넣고 다른 모든 단어를 두 번째 변수에 넣습니다. 그런 다음 bash 매개변수 대체를 사용하여 공백을 하이픈으로 바꿀 수 있습니다.
while read -r first rest; do
echo "$first ${rest// /-}"
done < test.txt
이 됩니다.아니요공백을 축소하여 한 줄의 단어 사이에 공백이 여러 개 있는 경우.
hello there big world
다음과 같은 결과가 출력됩니다.
hello there-----big-----world
하이픈을 하나만 원할 경우 단어를 bash 배열로 읽을 수 있습니다.
while read -ra words; do
echo "${words[0]} $(IFS=-; echo "${words[*]:1}")"
done < test.txt