我有一个场景,我必须比较Linux中的两个文件,并将第一个文件的内容保存到输出文件。
第一个文件:
user1 /dir1/dir2/dir3/dir4/file.log
user2 /dir1/dir2/dir3/dir4/file1.log
第二档
/dir1/dir2/dir3/dir4/file.log: ASCII text
/dir1/dir2/dir3/dir4/file1.log: data
输出
假设在文件路径字符串上进行比较,如果文件类型为数据,则 它应该在输出文件中打印第一个文件内容。
user2 /dir1/dir2/dir3/dir4/file1.log
我曾尝试使用带有FNR == NR选项的awk,但我不确定它是否取得了正确的结果,因为我是Linux脚本的新手。
有人能帮助我吗?
答案 0 :(得分:1)
关注awk
可能对您有所帮助:
awk '
FNR==NR{
a[$2]=$1;
next
}
{
sub(/:/,"",$1)
}
($1 in a) && ($2=="data"){
print a[$1], $1
}
' first second
输出如下:
user2 /dir1/dir2/dir3/dir4/file1.log
答案 1 :(得分:1)
此awk
也应该有效:
awk -F '[[:blank:]]*:[[:blank:]]*' 'FNR==NR{ if ($2=="data") a[$1]; next}
$2 in a' file2 FS='[[:blank:]]*' file1
user2 /dir1/dir2/dir3/dir4/file1.log