如何在文件上应用子字符串功能

时间:2018-10-16 11:51:09

标签: unix

我有一种情况,我必须找到表的列名。 我有一个大文件,大约有5万条记录 喜欢:

PLACES_OF_INDIA_2 :3432123, :Names Expr=('"Table_Name1".Column_1 || '' '' || "Table_Name2".Column_1 || '' '' || "Table_Name3"."Column_2"'), :Name=BCUDB2."Table_Name1".ATTR_VALUE, :Condition=BCUDB2."Table_Name1".Column_1, :Tables=(ABCXYZ."Table_Name1", ABCXYZ."Table_Name2", ABCXYZ."Table_Name3"), :Keys=ABCXYZ."IT_DIM_ANHBUSCH_37560".(M_113478_PQR(Int), M_113443_PQR(Int), M_113484_PQR(Int), M_113470_PQR(Int), M_113468_PQR(Int)), :Attrs=(Name :456866 = ('"Table_Name1".Column_1 || '' '' || "Table_Name2".Column_1 || '' '' || "Table_Name3"."Column_2"', ABCXYZ."Table_Name1", ABCXYZ."Table_Name2", ABCXYZ."Table_Name3"), PLACES_OF_ORIGIN_WineHierarchy_2 :490064736 = ABCXYZ."Table_Name1".ATTR_VALUE)

因此,我想提取文件中用于表的行号的列。我在单独的文件中有表格列表 Table_Name1 Table_Name2 Table_Name3

,我希望输出像 1,栏_1 1,栏_2 1,第3列

请您检查一下

1 个答案:

答案 0 :(得分:0)

您的文件看起来有点复杂,我看不到列名将存在的任何特定模式。

所以,我为入门者提供了一个小型解决方案,如下所示:

for i in `cat table.txt` 
do 
num=`echo $i| tr "Table_Name" "\n" |sed '/^$/d'`
echo -n $num >>ans.txt
echo -n ",">>ans.txt
col=`echo $a| awk -vRS=")" -vFS="(" '{print $2}'|tr "||" "\n"|grep $i|cut -d'.' -f2 |grep -v ","`
echo $col >>ans.txt
done

输出就像

   cat ans.txt 
    1,Column_1
    2,Column_1
    3,"Column_2"'

您可以进一步处理,因为这不是确切的输出。但是您有一些起点。

让我知道这是否有帮助。