以下のように、複数行に単一のコンマを含む test.txt ファイルがあります。
$ cat test.txt
ABCD
Test,plan
Sample
Working
Tester,Developer
Learn
Teach
Study
Coding
Stack,exchange
必要な出力は次のとおりです。
ABCD
ABCD
Sample
Working
Working
Learn
Teach
Study
Coding
Coding
Unixコマンドを使用して上記の内容を印刷する方法が見つかりません。このカンマ行検索を処理し、上記の行に置き換える方法を教えてください。
交換するかどうかわからない場合は、次の検索をお試しください。
#Searching comma
sed -i 's/,/replace_above_line/g' test.txt
カンマを含むファイルの前の行にグローバル置換を実行したいと思います。
答え1
のsed
場合、パターン空間に2行を維持する必要があります。
sed -i -e '$!N;s/\(.*\)\n.*,.*/\1\n\1/' -e 'P;D' file
または を使用して、カンマ行( )の前の各行をed
表示し、コピー( )して戻って元の行を削除することもできます( )。g/,/-1
t
-1d
$ ed -s file
g/,/-1t\
-1d
wq
または1行で:
printf '%s\n' g/,/-1t\\ -1d wq | ed -s file