我有两个文件,
File1中
INT1; INT2; INT3
INT4; INT5; INT6
INT7; INT7; INT9
文件2
INT1; INT2; INT3
接下来我将grep文件之间的区别,只采用第三列的整数。
DIFFERENCE=`grep -vxFf File1 File2 | awk 'BEGIN { FS = ";" } ; { print $3 }'`
导致
INT6 INT9
接下来我想用换行符替换空格
echo $DIFFERENCE | sed 's/ /;\n/g'
导致
INT6;
INT9
就像它应该的那样。
相反,当我在脚本中执行此操作时,它将返回
INT6
INT9
为什么它在脚本中执行此操作,是否有解决方案/如何轻松修改我的结果?
原始代码和输出
CODE=`grep -vxFf $FOUND $COMPARETO | awk 'BEGIN { FS = ";" } ; { print $3 }'`
echo "$CODE;" | sed 's/ /;\n/g' > "testfile"
8000070118157
8002820000804个
3394700015011;
答案 0 :(得分:2)
您的中间输出在单行上不是INT6 INT9
,而是已经有两行,因此sed
不会替换任何内容。
您可以在awk
本身执行所有操作,例如
$ awk -F';' 'NR==FNR{a[$0];next} !($0 in a){print $3 FS}' file2 file1
INT6;
INT9;
如果你不想要最后一个;
,也许更容易管道到sed '$ s/;$//'