1

次の内容を含むテキスト ファイル (text1.txt) があるとします。

TAG 97
//S211130000059564  SE0000273294
//SE0000112724
MDGF 348

// で始まる行の場合、2 番目の単語がある場合、その単語を次の行に出力したいので、上記のファイル text1.txt は次のようになります。

TAG 97
//S211130000059564  
SE0000273294
//SE0000112724
MDGF 348

誰でもこれについて私を助けることができます、Pls ..

4

3 に答える 3

1

を使用してこれを試してください:

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

またはGNU を使用:

sed -r 's@^(//\S+)\s+(\S+)@\1\n\2@' file.txt

(ありがとうスティーブ)

出力

TAG 97
//S211130000059564
SE0000273294
//SE0000112724
MDGF 348

短い説明

  • perl&の両方で置換メカニズムを使用sedしますが、どちらも同じことを行います
  • 区切り文字として使用します@(任意の選択、好きな文字を選択してください)
于 2012-11-21T12:25:31.470 に答える
1

を使用する 1 つの方法を次に示しawkます。

awk '/^\/\// && NF == 2 { print $1 ORS $2; next }1' file

結果:

TAG 97
//S211130000059564  
SE0000273294
//SE0000112724
MDGF 348
于 2012-11-21T12:25:31.693 に答える
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
> 
于 2012-11-21T12:37:36.503 に答える