我有两个文件:
file1.dat
1.01
2.01
3.01
4.01
5.01
5.02
6.01
7.01
8.01
9.01
另一个文件,file2.dat如下:
0006.01
0008.01
我想要的是从file1.dat中删除file2.dat中列出的数字,为此我创建了一个bash脚本如下:
#!/bin/bash
touch file1.dat
touch file2.dat
for f in $(< file2.dat)
do
sed "/$f/d" file1.dat > output.dat
done
但实际上结果是output.dat等于file1.dat,因此我不知道问题是否可能是file2.dat中数字前面的零。
感谢大家。
[解决]
问题是由于文件开头的空格/制表符。我用后面的bash来解决它:
1)我用一个非常小的f90代码重写file2.dat,以消除实数前面的零,
2)我启动脚本以从tab1 / space中删除file1.dat然后再使用awk命令:
cat file1.dat | tr -d " \t\r" > file1_1.dat
cat file2_rewrit.dat | tr -d " \t\r" > file2_rewrit_1.dat
awk 'FNR==NR {a[$0];next} !($0 in a)' file2_rewrit_1.dat file1_1.dat > output.txt