파일의 줄을 사용하여 문자열과 파일 이름 생성

파일의 줄을 사용하여 문자열과 파일 이름 생성

foo.txt각 줄에 폴더 이름이 있는 파일이 있습니다 .

folder_1
folder_2
folder_3

나는 이런 일을하고 싶다 :

cat foo.txt | xargs -I {} echo 'function {}() { return stuff; }' > {}/function.js

즉, 파일을 한 줄씩 읽은 다음 각 줄을 사용하여 문자열을 만들고 해당 문자열이 저장된 파일의 이름을 만들고 싶습니다.

Bash의 명령줄에서 비슷한 작업을 어떻게 수행할 수 있나요?

답변1

파일의 모든 줄을 반복하면 됩니다.

while read line
do
    echo "function $line() { return stuff; }" > "$line/function.js"
done < foo.txt

물론 이는 이미 에 있다고 가정합니다 foo.txt. 그렇지 않은 경우 먼저 를 사용하여 생성하십시오 mkdir "$line".


awk루프 대신 사용하는 또 다른 방법 은 다음과 같습니다.

awk '{printf("%s\n","function "$0"() { return stuff; }")>$0"/function.js"}' foo.txt

답변2

xargs+를 사용하여 이 작업을 수행할 수 있습니다 sh -c.

<file1.txt xargs -d'\n' -L1 sh -c 'mkdir -p -- "$0"
printf %s\\n "function $0() { return stuff; }" >"$0"/function.js'

-I {}텍스트 파일에 이상한 콘텐츠(예: 와 같은 줄 - $'\n' \ $PATH)가 포함된 경우 확장을 방지하려면 이 구성을 사용하지 마세요.

관련 정보