bash - 在新的 txt 文件中多行打印 ID 号

bash - print id number on multiple lines in new txt file

我正在尝试将多个 .txt 文件连接成一个 .txt 文件。每个单独的文件都有一列 178 行,并与一个特定的人相关联。我希望串联文件具有三列:人的 ID #;人的会话#;从单个 .txt 文件中获取的值,例如:

  1. 所需的输出格式(减去要点):

     1 1 000
     1 1 001
     ....
     1 1 177
     1 2 000
     1 2 001
     ...
     1 2 177
    
  2. 我当前的脚本打印 ID # 和会话 # 的输出仅打印在每个人 178 行的第一行,其余 177 个值打印到 ID # 下面的第 1 列,例如:

     1 1 000
     001
     002
     ...
     177
     1 2 000
     001
     002
     ...
     177
     2 1 000
     001
     ...
    

我需要帮助获取从每个人的个人 .txt 文件中获取的 178 行每一行旁边的 ID # 和会话 #,而不仅仅是当前打印的第一行。

代码如下:

for subject in 170; do
    for session in 1 2; do

        cd ${datadir}
            ts_SalienceNetwork=$(cat sub${subject}.txt | awk '{print }')

            echo -e "${subject}\t${session}\t${ts_SalienceNetwork}" >> concat_data.txt

    done
done  

$t_SalienceNetwork 包含整个文件,您只是将其他变量放在它之前,而不是在每一行之前。

使用awk打印每行的第一列,每行的变量都在前面,不需要变量。

cd "$datadir" # no need to do this each time through the loop
for subject in 170; do
    for session in 1 2; do
        awk -v subject="$subject" -v session="$session" '{printf("%s\t%s\t%s\n", subject, session, )}' "sub$subject.txt"
    done
done >> concat_data.txt