명령줄의 동적 여러 줄 입력을 입력과 동일한 형식으로 파일에 저장하고 싶습니다.
예를 들어:
동적 입력을 위한 코드를 가져옵니다.
echo "Enter the multi-line message"
message=$(sed '/one.*/q')
echo $message > Finalinput.txt
아래와 같은 입력 메시지를 주면,
Subject: Subject for the file
Date: Friday, June 11, 2016 @ 02:00am - 06:00am
Time: 02:00am - 06:00am
Test message Test message Test message Test message Test message
Test message Test message Test message Test message Test message
Test message Test message Test message Test message Test message
Test message Test message Test message Test message Test message
Test message Test message Test message Test message Test message
Test message Test message Test message Test message Test message
Sincerely,
xxxxx
그러면 Finalinput.txt
위와 같은 형식이어야 하지만 다음과 같이 표시됩니다.
Subject: Subject for the file Date: Friday, June 11, 2016 @ 02:00am - 06:00am Time: 02:00am - 06:00am Test message Test message Test message Test message Test messageTest message Test message Test message Test message Test messageTest message Test message Test message Test message Test messageTest message Test message Test message Test message Test messageTest message Test message Test message Test message Test messageTest message Test message Test message Test message Test message
Sincerely,
xxxxx
이 문제로 인해 sed 명령은 일부 잘못된 패턴을 대체합니다. 쉘 스크립트를 사용하여 입력과 동일한 형식으로 명령줄의 동적 입력을 파일에 저장할 수 있도록 도와주세요.
답변1
문제는 echo
그것이 옳은 일을 하지 않는다는 것이다. 변수 주위에는 큰따옴표를 사용해야 합니다. 그렇지 않으면 줄 바꿈이 유지되지 않습니다.
echo "$message" >Finalinput.txt
원한다면 필요에 따라 다양한 방법으로 수행할 수 있습니다. 다음 코드는 텍스트 message
를 파일에 쓰는 동안 변수에 텍스트를 넣습니다.
message="$( sed '/one.*/q' | tee Finalinput.txt )"
이 sed
명령은 사용자로부터 입력을 받아 tee
이를 복사하는 개체에 한 번은 변수로 Finalinput.txt
, 한 번은 변수로 전달합니다 message
.
변수에 텍스트를 전혀 저장할 필요가 없다면 그냥
sed '/one.*/q' >Finalinput.txt
효과는 똑같이 좋습니다.