我正在尝试将多个.txt文件连接到一个.txt文件中。每个单独的文件都有一列有178行,并且与一个特定的人绑定。我希望连接文件有三列:person' ID#;人的会话#;从单个.txt文件中获取的值,例如:
所需的输出格式(减去子弹点):
1 1 000
1 1 001
....
1 1 177
1 2 000
1 2 001
...
1 2 177
我当前的脚本打印输出ID#和session#仅打印在每个人的178行的第一行,剩下的177值打印到ID#下面的第1列,例如:< / p>
1 1 000
001
002
...
177
1 2 000
001
002
...
177
2 1 000
001
...
我想帮助获取从每个人的个人.txt文件中获取的178行中的每一行旁边的ID#和session#,而不仅仅是当前打印的第一行。
以下代码:
for subject in 170; do
for session in 1 2; do
cd ${datadir}
ts_SalienceNetwork=$(cat sub${subject}.txt | awk '{print $1}')
echo -e "${subject}\t${session}\t${ts_SalienceNetwork}" >> concat_data.txt
done
done
答案 0 :(得分:1)
$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, $1)}' "sub$subject.txt"
done
done >> concat_data.txt