行の中間(文字列間)から行の最後まで文字列をコピーする方法

行の中間(文字列間)から行の最後まで文字列をコピーする方法

次のテキストファイル(1.txt)があります。

word1
word2
word3

私はsedを使用して、次のように各行の先頭と末尾に文字列を追加します。

sed 's/^/blahblah1  /g' 1.txt > 2.txt
sed 's/$/  blahblah2/g' 2.txt > 3.txt

次に続く:

blahblah1  word1  blahblah2
blahblah1  word2  blahblah2
blahblah1  word3  blahblah2

これはうまくいきますが、より多くのことをしたいと思います。

次のように、各行の中間(word1、word2など)の文字列を各行の末尾にコピーしたいと思います。

blahblah1  word1  blahblah2 word1
blahblah1  word2  blahblah2 word2
blahblah1  word3  blahblah2 word3

blahblah1とblahblah2はbashコマンドと他の文字列リテラルのみを表し、sedコマンドで示されているように、各行の先頭と終わりは同じです。 2つの間の文字列は異なります。これらの文字列は実際には「blahblah1」ではなく、「バラバラ2」。

どんな提案がありますか?

基本的に、文字列リストを含むテキストファイルを取得し、文字列を含むコード行をつかみ、その文字列を含むファイル名を持つファイルにダンプするコマンドのリストを含むbashスクリプトを作成したいと思います。列。

ベストアンサー1

編集:次は、「中間単語」が2番目の単語であると仮定しているため、これが問題を解決できない可能性があることに気づきました。

このスクリプトを試してください。ファイルから入力を読み込みます。input.txt

while read ln; do
    middle_word=`awk '{print $2}' <<< "$ln"`
    new="$ln $middle_word"
    echo "$new"
done < input.txt

提供された入力に基づいて、次の出力が提供されます。

blahblah1  word1  blahblah2 word1
blahblah1  word2  blahblah2 word2
blahblah1  word3  blahblah2 word3

警告:何らかの理由で各行の先頭のスペースが失われます。

おすすめ記事