안녕하세요. 사용 중 몇 가지 문제가 발생했습니다.앗루프에서 생성한 .tsv 파일의 시작 부분에 열을 추가합니다.
내 코드는 다음과 같습니다(나머지 루프는 무시할 수 있음).
while IFS= read -r line
do
curl *URL.org* > ./folder/$line.tsv
sleep 60
awk '{print "$line\t" $0}' ./folder/$line.tsv > $line.tabbed
done < ./folder/<filetoread>.txt
그래서 기본적으로 컬 명령에서 tsv 파일을 생성하고 $line 변수를 사용하여 파일을 생성하는 데 사용하는 루프가 있습니다. 읽은 파일은 단지 단일 단어 식별자 목록일 뿐입니다.
RUIAHT48
RUIAHT49
etc.
사용할 수 있을 것 같았는데앗이 $line 변수를 추가하여 새로 생성된 각 파일에 새 열을 만듭니다.
awk 명령 이전에 출력됩니다.
$line col1 col2 col3 col4 col5
$line CLV_M 19 25 False False
$line CLV_P 59 63 False False
$line DEG_N 1 3 False False
$line DOC_C 10 14 False False
원하는 출력;
new col1 col2 col3 col4 col5
<value> CLV_M 19 25 False False
<value> CLV_P 59 63 False False
<value> DEG_N 1 3 False False
<value> DOC_C 10 14 False False
새 열의 값은 모두 동일하지만 리터럴 "$line" 대신 실제 값이 있습니다. 여기서 내가 어디서 잘못됐나요? 실제로 awk나 다른 간단한 명령을 사용해야 합니까?
감사해요:)
답변1
awk
스위치를 사용 하려면 변수를 전달해야 합니다 -v
.
while IFS= read -r line
do
curl *URL.org* > "./folder/$file.tsv"
sleep 60
awk -v line="$line" '{ OFS = "\t"; print line,$0}' "./folder/$line.tsv" > "$line.tabbed"
done < ./folder/<filetoread>.txt
\t
OP에서 했던 것처럼 출력에 추가 할 수 있지만 OFS
저는 awk
.
또한, 무엇을 하고 있는지 잘 모르겠지만 이것이 어떻게 $file.tsv
사용되지 않는 것 같습니까? 내 생각엔 그게 다야 $line.tsv
?