我有很多文件 .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 命令
我有很多文件 .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
像这样执行:
要在许多文件上执行它:
更新
您还可以使用
sed
&tr
:这可能对你有用(GNU sed):
使用命令行选项
-i
来替换内联。删除每个文件的第一行(删除标题)。
将空格替换为换行符。这会将每个标记转换为单独的行。
删除字符串的第一部分,直到并包括
_
模式空间中所有行的第一部分。从行首删除
_
到行尾,留下结果。注意:如果用户只需要从一个或多个文件输出到 stdout,则该
-i
选项可以替换为 选项。-s
另请注意m
最后两个替换命令上的标志,它更改了通常的替换,以便有利于多行模式。要更改输出文件名,请使用 GNU 并行: