パターンを検索してから、3 番目の空白行が見つかるまで、パターンの後ろの空白行を数え、その空白行にコンマとセミコロンを入れようとします。空白行の間に大量のデータがある場合や、空白行の間にテキストが1行しかない場合があります。
GROUP DIRECTORY CATEGORIES
datadata
Grouping Cat
datadata
datadata
this is the 3rd blank line
私は成功せずに次のことを試しました。どんな提案がありますか?
sed '/GROUP DIRECTORY CATEGORIES/,/^$/^$/^$/,;/' file1>file2
sed '/GROUP DIRECTORY CATEGORIES/$/$/$/,;/' file1>file2
sed '/GROUP DIRECTORY CATEGORIES/{$;$;$/./,;/1;}' file1>file2
ベストアンサー1
sed
この目的に使用できますが、計算に関連するすべての操作はを使用して簡単に実行できますawk
。
このテストファイルを考えてみましょう。
$ cat file1
GROUP DIRECTORY CATEGORIES
datadata
Grouping Cat
datadata
datadata
Above is 3rd blank line
,;
次の3番目の空白行にaを追加するにはGROUP DIRECTORY CATEGORIES
:
$ awk '/GROUP DIRECTORY CATEGORIES/{f=1} f && /^$/ {f++; if (f==4) $0=",;"} 1' file1
GROUP DIRECTORY CATEGORIES
datadata
Grouping Cat
datadata
datadata
,;
Above is 3rd blank line
仕組み:
/GROUP DIRECTORY CATEGORIES/{f=1}
正規表現に一致する行が見つかるたびに、
GROUP DIRECTORY CATEGORIES
変数はf
1に設定されます。f && /^$/ {f++; if (f==4) $0=",;"}
0ではなく
f
現在の行が空の場合は1を/^$/
追加しますf
。 4の場合、f
現在の空白行を,;
。1
1
awkのprint-the-lineの不思議な略語です。