假设我有一个包含以下内容的文本文件(text1.txt):
TAG 97
//S211130000059564 SE0000273294
//SE0000112724
MDGF 348
对于以//开头的行,如果有第二个单词,我想在下一行打印该单词,因此上面的文件text1.txt将变为:
TAG 97
//S211130000059564
SE0000273294
//SE0000112724
MDGF 348
任何人都可以帮我这个,请...
答案 0 :(得分:1)
尝试使用perl执行此操作:
perl -pe 's@^(//\S+)\s+(\S+)@$1\n$2@' file.txt
或使用GNU sed:
sed -r 's@^(//\S+)\s+(\S+)@\1\n\2@' file.txt
(谢谢steve)
<强>输出强>
TAG 97
//S211130000059564
SE0000273294
//SE0000112724
MDGF 348
简短说明
perl
&amp; sed
,他们都做同样的事情@
作为分隔符(任意选择,选择你喜欢的任何角色)答案 1 :(得分:1)
这是使用awk
的一种方式:
awk '/^\/\// && NF == 2 { print $1 ORS $2; next }1' file
结果:
TAG 97
//S211130000059564
SE0000273294
//SE0000112724
MDGF 348
答案 2 :(得分:0)
awk '{if($0~/\/\// && $2)print $1"\n"$2; else print}' your_file
测试如下:
> cat temp
TAG 97
//S211130000059564 SE0000273294
//SE0000112724
MDGF 348
> awk '{if($0~/\/\// && $2)print $1"\n"$2; else print}' temp
TAG 97
//S211130000059564
SE0000273294
//SE0000112724
MDGF 348
>