단어 사이에 공백이 있는 경우 두 번째 열에 하이픈을 넣는 명령 [닫기]

단어 사이에 공백이 있는 경우 두 번째 열에 하이픈을 넣는 명령 [닫기]

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

관련 정보