텍스트 파일의 각 줄에 대해 Python 스크립트 실행

텍스트 파일의 각 줄에 대해 Python 스크립트 실행

Bash에서 다음 작업을 어떻게 수행할 수 있나요?

텍스트 파일의 각 줄에서 Python 스크립트를 별도로 입력으로 실행한 다음 파일을 읽는 줄의 이름을 딴 json 파일에 결과를 저장하는 스크립트를 작성해야 합니다.

따라서 텍스트 파일 10tweets.txt는 다음과 같습니다.

고양이 10tweets.txt

Trump on the other hand goes all in on water boarding AND some. #GOPDebate
RT @wpjenna Donald Trump promises that he will not touch the 2nd amendment -- "unless we're going to make it stronger."
Trump 23%, Rubio 19%, Kasich & Bush 14%, Christie 10%, Cruz 9% #NHPrimary
@realDonaldTrump Thank you for saying you won't use vulger language anymore. Talk about Sanders & Clinton. Take Cruz as VP. Mexican votes!!!
RT @SurfPHX Mr. Trump @realDonaldTrump tweeted 25 minutes ago. You all do realize, that our future President hardly sleeps. He's a Fighter and a Worker!
go, Bernie #DemDebate
Sanders calls out Clinton on taking Foreign Policy advice from Warmonger Henry Kissinger https://t.co/xT5J4uh4m4 via @YouTube
Cruz, Rubio, and the Moral Bankruptcy of Progressive Identity Politics https://t.co/kSQstJXtKO via @NRO
RT @scarylawyerguy "Who does Bernie Sanders listen to on foreign policy." - A question Hillary had to raise b/c the media will not. #DemDebate
Why Did U of California Fire Tenured Riverside Professor? / Ted Cruz and Higher Ed -- ... - https://t.co/zFxa4Q70wh

출력 폴더에 1.json, 2.json, 3.json, 4.json, 5.json과 같은 출력이 있기를 원합니다.

Bash 스크립트에서 을 사용 exec entity_sentiment.py "$@"하고 파일의 각 줄에 연결하는 방법을 잘 모르겠습니다. 스크립트가 실행되는 방식은 아래와 같습니다.

$ python entity_sentiment.py sentiment-entities-text "Thank you for saying you won't use vulger language anymore"
Mentions: 
Name: "vulger language"
  Begin Offset : 35
  Content : vulger language
  Magnitude : 0.699999988079071
  Sentiment : -0.699999988079071
  Type : 2
Salience: 1.0
Sentiment: magnitude: 0.699999988079071
score: -0.699999988079071

예를 들어 스크립트에 대한 입력은 파일의 첫 번째 줄로 가정할 수 있습니다.

기본적으로 다음 bash 스크립트를 실행하면 파일의 마지막 줄만 분석하여 1.json에 저장합니다.

#!/bin/bash

n=1

while read -u 3 -r line; do
  python entity_sentiment.py sentiment-entities-text "$line" > "$((n++)).json"
done 3< 10tweets.txt

다음은 bash IRC 채널에서 제안을 실행할 때 어떤 일이 발생하는지에 대한 스니펫입니다.https://pastebin.com/raw/VQpPFJYs그리고https://pastebin.com/raw/GQefrTX0

답변1

read입력 파일을 한 줄씩 입력하고 다음과 같은 명령을 사용하여 각 줄에 명령을 적용할 수 있습니다 .

#!/bin/bash

n=1

while read -r line; do
  python entity_sentiment.py sentiment-entities-text "$line" > "$((n++)).json"
done < input.txt

exec entity_sentiment.py "$@"어떻게 도움이 될지 모르겠습니다 .

답변2

IRC bash 커뮤니티에 감사드립니다

#!/bin/bash

n=1

while read -u 3 -r line; do
  echo $n "${line::30}"
  python entity_sentiment.py sentiment-entities-text "$line" > "$((n++)).json"
  ((n++))
done 3< 10tweets.txt

관련 정보