1

ファイルには、ID、名前、およびその他の列が含まれています。特定の ID の前に詳細を含む名前を含む行を挿入したいと考えています。次に、ID 列を適切な ID シーケンスで更新する必要があります。

サンプル ファイルの内容:

Header1
Header2
1 AAA ...
2 BBB ...
3 CCC ...
4 XXX ...
5 YYY ...
6 ZZZ ...
Footer

MMM ...ID #4 の前、つまり行の前に挿入したい4 XXX ...

望ましい出力:

Header1
Header2
1 AAA ...
2 BBB ...
3 CCC ...
4 MMM ...
5 XXX ...
6 YYY ...
7 ZZZ ...
Footer

次のコマンドを使用して適切な挿入を行うことができましたが、適切な番号付けで ID 列を更新する方法がわかりません。

sed '/^\s*4/ i 4 MMM ...' file

この問題の解決を手伝っていただければ幸いです。

4

2 に答える 2

4

1 つのオプションは次のとおりです。

awk '/^4/ {print ++i, "MMM"} /^[0-9]/ {$1=++i} 1' file

説明

  • /^4/ {print ++i, "MMM"}で始まる行で、増分値4で印刷します。MMM
  • /^[0-9]/ {$1=++i}number で始まる行では、最初のフィールドを増分値に設定します。
  • 1印刷ライン

テスト

$ awk '/^4/ {print ++i, "MMM"} /^[0-9]/ {$1=++i} 1' file
Header1
Header2
1 AAA ...
2 BBB ...
3 CCC ...
4 MMM
5 XXX ...
6 YYY ...
7 ZZZ ...
Footer
于 2013-10-15T20:34:16.540 に答える
2
$ awk '/^4 /{print "4 MMM ..."; inc=1} /^[[:digit:]]/{$1+=inc} 1' file
Header1
Header2
1 AAA ...
2 BBB ...
3 CCC ...
4 MMM ...
5 XXX ...
6 YYY ...
7 ZZZ ...
Footer
于 2013-10-15T20:37:16.157 に答える