ファイルの各行の末尾で特定の文字/文字列を見つけ、最後の行を除いて欠落している場合は、その文字を追加するにはどうすればよいですか?

ファイルの各行の末尾で特定の文字/文字列を見つけ、最後の行を除いて欠落している場合は、その文字を追加するにはどうすればよいですか?

最後の行を除くすべての行の末尾に特定の文字/文字列が必要なファイルがあります。各行の末尾で対応する文字/文字列を検索し、存在しない場合は、追加するシェルスクリプトを使用してこれを達成できますか?

たとえば、ファイルの内容は次のようになります。

hello1
hello
hell1
hel
end

最後の行を除くすべての行の末尾に文字1がなければならず、スクリプトの出力は次のようになります。

hello1
hello1
hell1
hel1
end

sedやawkを使って書くことができるようですが、どのように機能するのかわかりません。よろしくお願いします。

ベストアンサー1

1つのアプローチは次のとおりです。

 sed -e '
    s/1$/&/;t
    $!s/$/1/
' file 
sed -e '
  $q; /1$/!s/$/1/
' file

または:

sed -e '$!{/1$/!s/$/1;}'

または空白行がない場合:

sed -e '$!s/[^1]$/&1/' 

おすすめ記事