Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/shell/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Bash 正在尝试查找shell命令以从文件中删除两个文件之间的公用行_Bash_Shell_Grep - Fatal编程技术网

Bash 正在尝试查找shell命令以从文件中删除两个文件之间的公用行

Bash 正在尝试查找shell命令以从文件中删除两个文件之间的公用行,bash,shell,grep,Bash,Shell,Grep,我试图找到一个shell命令,从一个文件中删除两个文件之间(两个逗号之间)的公共行 因此,我知道该命令用于查找文件之间的公共行: file1=/opt/IBM/custom/NAC_Dslam/junk/PortParameter_E7_Single_cust_stats.csv file2=/opt/IBM/custom/NAC_Dslam/junk/PortParameter_E7_Bonded_cust_stats.csv comm -12 <(cut -d ',' -f2 ${f

我试图找到一个shell命令,从一个文件中删除两个文件之间(两个逗号之间)的公共行

因此,我知道该命令用于查找文件之间的公共行:

file1=/opt/IBM/custom/NAC_Dslam/junk/PortParameter_E7_Single_cust_stats.csv
file2=/opt/IBM/custom/NAC_Dslam/junk/PortParameter_E7_Bonded_cust_stats.csv

comm -12 <(cut -d ',' -f2 ${file1} | sort) <(cut -d ',' -f2 ${file2} | sort) 
PortParameter_E7_Bonded_cust_stats.csv:

所以我想删除保税文件中的前4个

我知道我能做到:

comm -12 <(cut -d ',' -f2 ${file1} | sort) \
         <(cut -d ',' -f2 ${file2} | sort) > deleteme2.out
然后我可以做这些:

grep -vwF -f deleteme2.out ${file2} > realAllBondedFixed.test
grep -vwF -f deleteme2.out ${file1} > realAllSingleFixed.test
然后,它在以下位置显示0长度:

comm -12 <(cut -d ',' -f2 realAllBondedFixed.test | sort) \
         <(cut -d ',' -f2 realAllSingleFixed.test | sort) > commonShouldBeEmpty.test

我不确定我是否遗漏了格式问题,或者是什么。我尝试了括号中的
尝试管道
通信
grep

file1=/opt/IBM/custom/NAC_Dslam/junk/PortParameter_E7_Single_cust_stats.csv
file2=/opt/IBM/custom/NAC_Dslam/junk/PortParameter_E7_Bonded_cust_stats.csv

comm -12 <(cut -d ',' -f2 ${file1} | sort)  <(cut -d ',' -f2 ${file2} | sort)  |
grep -vwF > realAllBondedFixed.test2

它不运行
comm
util,而是寻找一个名为comm的数据文件发送到
grep
——但是没有这样的文件,因此它给出了错误
bash:comm:no-this-file或directory
尝试将
comm
管道传输到
grep

file1=/opt/IBM/custom/NAC_Dslam/junk/PortParameter_E7_Single_cust_stats.csv
file2=/opt/IBM/custom/NAC_Dslam/junk/PortParameter_E7_Bonded_cust_stats.csv

comm -12 <(cut -d ',' -f2 ${file1} | sort)  <(cut -d ',' -f2 ${file2} | sort)  |
grep -vwF > realAllBondedFixed.test2

它不运行
comm
util,而是寻找一个名为comm的数据文件发送到
grep
——但是没有这样的文件,所以它给出了错误
bash:comm:没有这样的文件或目录

它只需要使用grep吗?如果grep不是必需的,这里有另一种解决方案

cat PortParameter_E7_Single_cust_stats.csv PortParameter_E7_Bonded_cust_stats.csv | 
sort | uniq -d | cut -d ',' -f2 > output.txt
Output.txt:

12345678
34567890
45678901
23456789

它只需要使用grep吗?如果grep不是必需的,这里有另一种解决方案

cat PortParameter_E7_Single_cust_stats.csv PortParameter_E7_Bonded_cust_stats.csv | 
sort | uniq -d | cut -d ',' -f2 > output.txt
Output.txt:

12345678
34567890
45678901
23456789

你能更明确地说出你想要的结果吗?您有很好的输入示例,但是您已经讨论了您想要的输出是什么。请编写一个shell脚本,而不是一个超长的shell命令。您可以更明确地说明您想要的输出吗?您有很好的输入示例,但是您已经讨论了您想要的输出是什么。编写一个shell脚本而不是一个超长的shell命令。这只是获取公共部分的一种新方法。我需要从两个文件中删除带有公共部分的行。谢谢你的努力!我要请求大家不要投这个人的票,因为我感谢大家的努力。这只是一种获得共同部分的新方法。我需要从两个文件中删除带有公共部分的行。谢谢你的努力!我要请求人们不要投这个人的票,因为我感谢他们的努力。
ACC: 1-1-1-21,12345679,13942
ACR: 1-1-1-22,23456780,3069
ACD: 1-1-1-33,34567899,796
ACE: 1-1-1-47,45678909,3187
file1=/opt/IBM/custom/NAC_Dslam/junk/PortParameter_E7_Single_cust_stats.csv
file2=/opt/IBM/custom/NAC_Dslam/junk/PortParameter_E7_Bonded_cust_stats.csv

comm -12 <(cut -d ',' -f2 ${file1} | sort)  <(cut -d ',' -f2 ${file2} | sort)  |
grep -vwF > realAllBondedFixed.test2
grep -vwF < comm ...
cat PortParameter_E7_Single_cust_stats.csv PortParameter_E7_Bonded_cust_stats.csv | 
sort | uniq -d | cut -d ',' -f2 > output.txt
12345678
34567890
45678901
23456789