消除文件中的字符串并打印其余文件

时间:2015-10-30 11:41:45

标签: linux bash shell sed data-processing

我有两个文件:

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

0 个答案:

没有答案