Sed Bashスクリプトはsedの最初の行だけを実行します。

Sed Bashスクリプトはsedの最初の行だけを実行します。

私のbashスクリプトが実行されますsed。実行に使用するコマンドは次のとおりです。

sed -f sedhw.bash thesbians.txt

コンテンツsedhw.bash

s/[0-9]*//g
s/1908/---/g; s/1895/---/g; s/1903/---/g
s/,.*//g
s/^[^"]*"/"/
s/,[^",]*"/,/;s/"//g

ファイル内の各コマンドを一度実行して1つではなく5つの異なる出力を提供するには、このコマンドが必要です。

テキストファイルは次のとおりです

Chase,Cornelius 1943 "Chevy"
Davis,Ruth      1908 "Bette"
Keaton,Joseph   1895 "Buster"
Stone,Emily     1988 "Emma"
Lee,Shelton     1957 "Spike"
Reynolds,Mary   1932 "Debbie"
Crosby,Harry    1903 "Bing"
Fey,Stamatina   1970 "Tina"

答え1

〜のように@roaimaそしてツイートすでにコメントしており、あなたのものはsedhw.bashsedfileです。

sed -f sedhw.bash thesbians.txtsedhw.bashのすべてのsedコマンドは、thesbians.txtファイルに対して実行されます。

今何してるの?代わりにsedhw.bashの行を繰り返し、各行を実行して新しい出力ファイルを生成します。

#!/bin/bash
while read num line; do 
     sed "$line" thesbians.txt > output.${num}.txt
done < <(nl sedhw.bash)

説明すると、 nl sedhw.bashコマンドに番号が付けられ、「タブ区切り」の行番号とコマンドが表示されます。

     1  s/[0-9]*//g
     2  s/1908/---/g; s/1895/---/g; s/1903/---/g
     3  s/,.*//g
     4  s/^[^"]*"/"/
     5  s/,[^",]*"/,/;s/"//g

<(...)コマンド出力は while ループでファイルとしてレンダリングされます。

ループはこの「ファイル」を1行ずつ入力し、タブ区切りフィールドを変数<「num」と「line」として読み込みます。

sed"$line" コマンドを実行して、sedhw.bash の対応する行番号のファイルに書き込みます。

結果

$ for item in output*; do echo; echo "=== $item ==="; cat $item ; done 

=== output.1.txt ===
Chase,Cornelius "Chevy"
Davis,Ruth      "Bette"
Keaton,Joseph   "Buster"
Stone,Emily     "Emma"
Lee,Shelton     "Spike"
Reynolds,Mary   "Debbie"
Crosby,Harry    "Bing"
Fey,Stamatina   "Tina"

=== output.2.txt ===
Chase,Cornelius 1943 "Chevy"
Davis,Ruth      ---  "Bette"
Keaton,Joseph   ---  "Buster"
Stone,Emily     1988 "Emma"
Lee,Shelton     1957 "Spike"
Reynolds,Mary   1932 "Debbie"
Crosby,Harry    ---  "Bing"
Fey,Stamatina   1970 "Tina"

=== output.3.txt ===
Chase
Davis
Keaton
Stone
Lee
Reynolds
Crosby
Fey

=== output.4.txt ===
"Chevy"
"Bette"
"Buster"
"Emma"
"Spike"
"Debbie"
"Bing"
"Tina"

=== output.5.txt ===
Chase,Chevy
Davis,Bette
Keaton,Buster
Stone,Emma
Lee,Spike
Reynolds,Debbie
Crosby,Bing
Fey,Tina

関連情報