0
我有了整數列一個文件 - >文件1如何刪除一個文件的第一個值沒有出現在另一個文件中的行?
1 2 3
2 2 2
3 2 1
3 1 4
4 1 4
5 0 0
我有一個的(唯一的)整數單列另一個文件 - >文件2
1
3
4
這兩個文件都非常大。我想刪除File1的第一列值不出現在File2中的行。
1 2 3
3 2 1
3 1 4
4 1 4
我有了整數列一個文件 - >文件1如何刪除一個文件的第一個值沒有出現在另一個文件中的行?
1 2 3
2 2 2
3 2 1
3 1 4
4 1 4
5 0 0
我有一個的(唯一的)整數單列另一個文件 - >文件2
1
3
4
這兩個文件都非常大。我想刪除File1的第一列值不出現在File2中的行。
1 2 3
3 2 1
3 1 4
4 1 4
您可以通過File1行循環,從每行中提取第一個數字並嘗試查找與File2中的數字完全匹配。
#!/bin/bash
IFS=$'\n'
re='^[0-9]+$'
for i in $(cat File1); do
num=$(echo $i | awk '{print $1}')
grp=$(grep "^${num}\b" File2)
if [[ $grp =~ $re ]] ; then
echo $i
fi
done
您可以將此腳本的輸出保存在一個臨時文件中,並使用它來覆蓋原始File1。
[不要用'for'讀取文件的行](http://mywiki.wooledge.org/DontReadLinesWithFor) –
這可以用'awk'輕鬆完成。請顯示你的嘗試。 – Barmar
我還沒有嘗試過任何東西,因爲我不確定從哪裏開始。 – pmdaly
首先將'File2'讀入數組。然後在讀取'File1'時,如果數組中沒有列,請打印該行。 – Barmar