我有很多文件.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 命令
类似这样的事情:
节目:
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