我有2个变量,i和j。对于每个变量组合,都有一个文本文件text.txt,文本以空格分隔的列排列,例如:
string1 43245 7.45
string2 23452 9.34
string3 23652 2.57
我想做以下事情: 制作一个包含所有文本文件的大型文本文件,其中包含在其他列中添加的变量,以及包含文本的其他一些其他列,而不是变量。 E.g。
i = x01
j = y01
然后输出应为:
x01 y01 extrastring string1 43245 7.45
x01 y01 extrastring string2 23452 9.34
x01 y01 extrastring string3 23652 2.57
我尝试过类似的事情:
awk '{$0="'"$i"' '"$j"' extrastring"$0}'1 $i/$j/text.txt >> newtext.txt
这不起作用。
编辑: 我可能需要补充说,这应该在双循环中运行:
for i in x01 x02 x03
do
for j in y01 y02 y03
do
awk '{$0="'"$i"' '"$j"' extrastring"$0}'1 $i/$j/text.txt >> newtext.txt
done
done
编辑: 我根据SoFan的回答尝试了这个
for i in x01 x02 x03
do
for j in y01 y02 y03
do
cd $i/$j/
awk -v i="$i" -v j="$j" '{print i,j,"extrastring",$0}' text.txt >> newtext.txt
done
done
不幸的是它不起作用。该脚本将无法运行。
答案 0 :(得分:1)
awk -v i="x01" -v j="y01" '{print i,j,"extrastring",$0}' text.txt
x01 y01 extrastring string1 43245 7.45
x01 y01 extrastring string2 23452 9.34
x01 y01 extrastring string3 23652 2.57
或者,如果您已经声明了变量:
i=x01
j=y01
awk -v i="$i" -v j="$j" '{print i,j,"extrastring",$0}' text.txt
答案 1 :(得分:0)
如何使用the read
command来阅读文件,并使用cat file.txt | while read line; do
echo "$i $j extrastring $line"
done > newfile.txt
输出?
像
这样的东西/usr/lib/systemd/system/bluetooth.service
答案 2 :(得分:0)
第3版:
for var1 in x01 x02
do
for var2 in y01 y02
do
awk '{ print "'"$var1 $var2"'" " extrastring " $0}' $var1/$var2/text.txt
done
done
x01 y01 extrastring string1 43245 7.45
x01 y01 extrastring string2 23452 9.34
x01 y01 extrastring string3 23652 2.57
x01 y02 extrastring string1 43245 7.45
x01 y02 extrastring string2 23452 9.34
x01 y02 extrastring string3 23652 2.57
x02 y01 extrastring string1 43245 7.45
x02 y01 extrastring string2 23452 9.34
x02 y01 extrastring string3 23652 2.57
x02 y02 extrastring string1 43245 7.45
x02 y02 extrastring string2 23452 9.34
x02 y02 extrastring string3 23652 2.57
但是没有在目录结构下测试它。
答案 3 :(得分:0)
试试这个;
test.sh:
public string getRandomNumber()
{
Random random = new Random(100000);
string randomNumber = random.Next(999999).ToString("D6");
return randomNumber;
}