如何从大文本中提取文本

时间:2019-05-31 13:04:48

标签: linux bash

我在FILE1.txt中有这种格式的数据

#include "pch.h"
#include <iostream>
#include <vector>

int main()
{
    int* arr;
    for (int i = 0; i < 1; i++)
    {
        std::vector<int> vec{ 1 };
        arr = &vec[0];
        std::cout << "Inside the loop in the vector: " << vec[0] << std::endl;
        std::cout << "Inside the loop in the array: " << arr[0] << std::endl;
    }
    std::cout << "Outside the loop in the array: " << arr[0];
}

我想以以下格式将数据打印到文件.... FILE2.txt

@E/f1/w/ @H/abc/w/ @demo/file/wk/Fil0.fk
@E/f2/w/ @H/cdv/w/ @demo/file/wk/Fil1.fk
@E/f3/w/ @H/efg/w/ @demo/file/wk/Fil2.fk
@E/f4/w/ @H/mno/w/ @demo/file/wk/Fil3.fk
@E/f5/w/ @H/pqr/w/ @demo/file/wk/Fil4.fk

2 个答案:

答案 0 :(得分:0)

欢迎使用StackOverflow。

我假设您要将第一列和第二列保存在新文件中。

您必须在FILE1.txt所在的路径中创建一个类似于波纹管的bash,使用chmod +x <bash_file_name>命令将其更改为可执行文件,然后由./<bash_file_name>

运行
#!/bin/bash

input="FILE1.txt"
while IFS= read -r line
do
    # Extract file name
    filename=`echo "$line" | awk '{print $3}' | cut -d'/' -f4`

    # Extract data
    clumnOne=`echo "$line" | awk '{print $1}'`
    clumnTwo=`echo "$line" | awk '{print $2}'`

    # Write to file
    echo "$clumnOne $clumnTwo" >> $filename
done < "$input"

答案 1 :(得分:-1)

始终显示您尝试过的内容。

假设文件名为x

cut

$: cut -d/ -f 10 x

sed

$: sed 's#^.*/##' x

awk

$: awk  ' { gsub("^.*/",""); print; }' x

bash

$: while read line; do echo "${line//*\/}"; done < x