루프에서 .tsv 파일의 시작 부분에 열을 추가하시겠습니까?

루프에서 .tsv 파일의 시작 부분에 열을 추가하시겠습니까?

안녕하세요. 사용 중 몇 가지 문제가 발생했습니다.루프에서 생성한 .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

\tOP에서 했던 것처럼 출력에 추가 할 수 있지만 OFS저는 awk.

또한, 무엇을 하고 있는지 잘 모르겠지만 이것이 어떻게 $file.tsv사용되지 않는 것 같습니까? 내 생각엔 그게 다야 $line.tsv?

관련 정보