20

コンマの後のスペースを削除するためのこのsedコマンドがあります。

 sed -e 's/,\s\+/,/g' example.txt

どうすれば変更できますか。特定の行番号のみの間で変更が行われます。

(例: 2 行目と 3 行目の間)。

4

3 に答える 3

32

使用する:

sed '2,3s/,\s\+/,/g' example.txt
于 2013-04-24T21:57:54.007 に答える
8

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;}'

これが誰かを助けることを願っています!

于 2013-04-25T04:27:01.503 に答える
1
sed -e '2,3!b;s/,\s\+/,/g' example.txt

このバージョンは、必要な行を処理するためのコマンドを後で追加する場合に役立ちます。

于 2013-04-24T21:57:45.217 に答える