コンマの後のスペースを削除するためのこのsedコマンドがあります。
sed -e 's/,\s\+/,/g' example.txt
どうすれば変更できますか。特定の行番号のみの間で変更が行われます。
(例: 2 行目と 3 行目の間)。
使用する:
sed '2,3s/,\s\+/,/g' example.txt
OSX (BSD sed) には Linux (GNU) sed との構文の違いがいくつかあるため、苦労して手に入れたメモから以下を追加すると思いました。
OSX (BSD) SED find/replace within (address) block (start and end point patterns(/../) or line #s) in same file ( via & via & via & section 4.20 here ):
構文:
$ sed '/start_pattern/,/end_pattern/ [operations]' [target filename]
標準的な検索/置換の例:
$ sed -i '' '2,3 s/,\s\+/,/g' example.txt
$ sed -i '' '/DOCTYPE/,/body/ s/,\s\+/,/g' example.txt
複雑な演算子とグループ化を使用した検索/置換の例 (標準入力のストリーム使用のため、グループ化構文なしでは操作できません)。グループ化のすべてのステートメントは、別の行にするか、セミコロンで区切る必要があります。
複雑な演算子の例 (一致を含む行全体を削除します):
$ sed -i '' '2,3 {/pattern/d;}' example.txt
複数ファイルの検索 + sed:
$ find ./ -type f -name '*.html' | xargs sed -i '' '/<head>/,/<\/head>/ {/pattern/d; /pattern2/d;}'
これが誰かを助けることを願っています!
sed -e '2,3!b;s/,\s\+/,/g' example.txt
このバージョンは、必要な行を処理するためのコマンドを後で追加する場合に役立ちます。