用于在文本文件中将单词切换为换行符的脚本或命令

时间:2012-11-21 12:17:24

标签: shell unix

假设我有一个包含以下内容的文本文件(text1.txt):

TAG 97
//S211130000059564  SE0000273294
//SE0000112724
MDGF 348

对于以//开头的行,如果有第二个单词,我想在下一行打印该单词,因此上面的文件text1.txt将变为:

TAG 97
//S211130000059564  
SE0000273294
//SE0000112724
MDGF 348

任何人都可以帮我这个,请...

3 个答案:

答案 0 :(得分:1)

尝试使用执行此操作:

perl -pe 's@^(//\S+)\s+(\S+)@$1\n$2@' file.txt

或使用GNU

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
>