我有以下的问题,我需要提取的标签,看起来分离大的CSV的一些线路如下:如何过滤由制表符分隔的csv?
organe organ hkl0094508 g67 1 LBNhkl23 AcorFive sentiment PENDLEorFON WOOLEN MIL REWS Managed Services LBEAN 1-800-SFFA-CALL N
organe organ hkl0968175377 g67 1 GNSFORJL AcorFive sentiment NesorF Labs for JL . . . N
organe organ hkl099999 g67 1 INorFEL385 AcorFive sentiment FRYS REWS Managed Services B2B orFech SuppororF 916-356-1234 N
organe organ hkl108860 g67 1 INorFEL976 ACorFIVE sentiment RYOYO . . . . . . N
的想法是只提取匹配在第二列具有特定的行清单:
hkl0968175377
hkl0094508
拳头的办法,我想是用awk,如下: 我打字用verbatin模式的标签,按下Ctrl v,
awk -F " " 'FNR==NR{seen[$1]; next} $2 in seen' patterns original_list > new_list
但是当我做:
$ wc -l new_list
0 new_list
我得到了0线,我期望的输出将被称为new_list有以下两行的档案:
organe organ hkl0968175377 g67 1 GNSFORJL AcorFive sentiment NesorF Labs for JL . . . N
organe organ hkl0094508 g67 1 LBNhkl23 AcorFive sentiment PENDLEorFON WOOLEN MIL REWS Managed Services LBEAN 1-800-SFFA-CALL N
我想感谢任何建议,以克服这个情况。
如果你的输入文件和代码如你所说,那么你会得到你期望的输出。因此,要调试文件,请在脚本中添加打印语句,从第一个文件中打印FS,第一个文件打印$ 1,第二个文件打印带有分隔符的打印文件$ 2,以便您清楚地看到它们是什么,例如。 'printf'<%s> \ n“,$ 1'。 –
我不认为你的字段分隔符是正确的。尝试使用'-F'+''(两个或更多空格) – karakfa
或者如果您的数据(或脚本)已通过Windows操作系统系统,则可能有'\ r \ n'行尾。通过运行'dos2unix data1.txt data2.txt .... myScript.sh ....'清理它们。'每个文件将被替换为'\ n'版本。祝你好运。 – shellter