각 줄의 끝에 텍스트를 추가하세요.

각 줄의 끝에 텍스트를 추가하세요.

다음과 같은 많은 명령을 시도했습니다.

sed -i '' "s/$/<@string>/" txt.txt > txt2.txt

이로 인해 txt2.txt가 비어 있게 됩니다. 이유는 무엇입니까? ! ?

sed 's/$/<@string>/' txt.txt > txt2.txt

이것은 전혀 아무 일도 하지 않으며 경로가 <string>존재하지 않는다는 것을 알려줍니다.

그럼 어떻게 해야 할까요? 저는 OS X를 사용하고 있기 때문에 bsd sed를 사용하고 있습니다.

답변1

-i스위치를 사용하면 sed원본 파일이 편집됩니다. 이는 출력이 없음을 의미하며, 출력이 없으므로 리디렉션하면 빈 파일이 생성됩니다.

그러니까 당신이 원하는 건

sed -i '' 's/$/<@string>/' txt.txt

그렇지 않으면 원본이 변경됩니다 txt.txt.

 sed 's/$/<@string>/' txt.txt > txt2.txt

답변2

-i옵션은 Linux와 Unix 간의 호환성이 낮 sed으며 다른 운영 체제에서는 사용하지 못할 수도 있습니다.

둘째, 자신을 제외시키기 때문에 -iIO 리디렉션( )과 함께 사용할 수 없습니다 . >파일이 내부 편집을 사용하여 수정되었습니다.

따라서 파일을 제자리에서(동일한 파일로) 편집하려면 다음을 사용하는 것이 좋습니다.ex:

ex +"%s/$/<@string>/g" -cwq foo.txt

문자열을 바꾸고 다른 파일에 쓰려면 다음을 시도하십시오.

ex +"%s/$/<@string>/g" +"w another.txt" -cq! foo.txt

이 명령은 ex와 동일합니다 vi -e.

관련 정보