첫 번째 행에 한 행이 추가되고 마지막 행에 한 행이 추가 된 새 파일 작성


1

도움이 필요하거나 파이썬이 필요합니다 (한 번에 한 줄씩 읽음). 필요하지 않아야한다는 것을 알고 있습니다.

나는 많은 수의 텍스트 파일을 가지고 찾는다.

FILES=$(find ... -iname "*.txt")
num=0
for doc in $FILES; do
     echo "start string" > cat $doc > echo "end string" > "outfile$num.txt"
     let num=num+1
done

나는 많은 유닉스 명령을 모른다. 그러나 내가하고 싶은 것은 다음과 같다.

출력 "start string"다음에 cat $ doc 그리고 "end string"을 stdout에 저장하고 outfile에 저장하십시오.

도와 주셔서 감사합니다 !!

답변:


0

용도

{echo "start string"; cat $doc; echo "end string"} > "outfile$num.txt"

또는 대안 :

echo "start string" > "outfile$num.txt"
cat $doc >> "outfile$num.txt"
echo "end string" >> "outfile$num.txt"

또는 sed를 사용하는 또 다른 예 (awk와 비슷한 것을 할 수있다) :

sed -e '1i start string;$a end string' $doc > "outfile$num.txt"

첫 번째 예제에서 세 명령은 순차적으로 간단히 실행되고 출력은 전체적으로 출력 경로 재 지정으로 전달됩니다 > "outfile$num.txt".

두 번째 예제에서 우리는 세 가지 명령을 사용하여 >> 연산자 대신 > 연산자를 사용하여 주어진 파일을 출력으로 바꾸지 않고 주어진 파일에 출력을 연결하십시오.

또한, 제쳐두고, 당신은 당신의 사용에 조심해야합니다. for doc in $FILES, 공백으로 분리되므로 파일 이름에 공백이 있으면 하나의 파일 이름 대신 여러 개의 파일 이름으로 해석됩니다.


유감스럽게도 유닉스와 다른 유틸리티 프로그램을 읽는 데 너무 많은 시간과 노력이 필요합니다. 제 질문은 아마 바보 같은 질문 이었지만, 스트레스는 정말로 당신이 명확하게 생각하지 못하게 만듭니다. 당신은 내 하루를 훨씬 더 좋게 만들었습니다. 다시 감사드립니다! :)
Erik

첫 번째 예제는 약간의 조정이 필요합니다. { echo ...; cat $doc; echo ...; }. 내용과 중괄호를 구분하는 공백 및 마지막 에코 이후에 필수 세미콜론.
chepner
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.