分割行并在文件中获取图案

问题描述 投票:0回答:1

我有很多文件.txt,看起来像:

文件1.txt

header
1_fff_aaa 1_rrr_aaa 1_ggg_aaa ...

文件2.txt

header
1_ttt_aaa 1_iii_aaa 1_lll_aaa ...

我想删除标题并将第二行的字符串在空格后分成多行,并在 _ 字符之间采用模式:

输出:

file1_v1.txt

fff
rrr
ggg

file2_v1.txt

ttt
iii
lll

我想使用像 sed 这样的 unix 命令

unix sed do-while
1个回答
0
投票

类似这样的事情:

节目:

split.awk

NR == 1 {
    # ignore first header line
    next
}
{
    i=1
    while (i <= NF) {
        gsub(/^[^_]*_/, "", $i)
        gsub(/_[^_]*$/, "", $i)
        print $i
        i++
    }
}

这样执行:

awk -f split.awk file1.txt > file1_v1.txt

要在多个文件上执行它:

for f in file*.txt; do echo "$f"; awk -f split.awk "$f" > "${f%.txt}_v1.txt" ; done
© www.soinside.com 2019 - 2024. All rights reserved.