私はsedについて学んできましたが、これは非常に便利ですが、多くのガイドや例でこれを見つけることができません...ファイル名をテキストファイルのパスと拡張子を除いたテキストファイルをテキスト内の特定の行に挿入します。可能?sedでテキストファイルにファイル名を挿入
答えて
このような場合、正しい開始点はマニュアルページである必要があります。 sedのマニュアルにはsedが "filename"を理解する機能はありませんが、sedは行の前後にテキストを挿入する機能をサポートしています。
結果として、ファイル名を別々に分離し、テキストを変数に格納して、このテキストを必要な行の前/後に挿入する必要があります。
例:
説明$ a="/home/gv/Desktop/PythonTests/cpu.sh"
$ a="${a##*/}";echo "$a"
cpu.sh
$ a="${a%.*}"; echo "$a"
cpu
$ cat file1
LOCATION 0 X 0
VALUE 1a 2 3
VALUE 1b 2 3
VALUE 1c 2 3
$ sed "2a $a" file1 # Inject the contents of variable $a after line2
LOCATION 0 X 0
VALUE 1a 2 3
cpu
VALUE 1b 2 3
VALUE 1c 2 3
$ sed "2i $a" file1 # Inject the contetns of variable $a before line2
LOCATION 0 X 0
cpu
VALUE 1a 2 3
VALUE 1b 2 3
VALUE 1c 2 3
$ sed "2a George" file1 #Inject a fixed string "George" after line 2
LOCATION 0 X 0
VALUE 1a 2 3
George
VALUE 1b 2 3
VALUE 1c 2 3
:
a="${a##*/}"
は:の終わりから始まるすべての文字を削除します。見つけスラッシュ/(長い試合)
a="${a%.*}"
を最後までの文字列の先頭からすべての文字を削除します。最初に見つかった点までの文字列。 (ショートマッチ)。また、見つかった最も長いドットに%%を使用することもできます。
sed "2a $a"
は:ライン2変数の内容の後に挿入は
sed "2i $q"
$:ライン2の前にあなたは、プロセスの下でファイル内のインプレース変更を/作るためにsed -i
を使用することができます必要に応じて$
の内容を挿入
wrt I've been learning about sed
あなたは、s/old/new
を超えてsedについて学ぶべきことがたくさんあるので、あなたの時間を無駄にしているかもしれません。確かに他にもたくさんの言語構造とsedでできることがありますが、実際にはそれらをすべて避けて、代わりにawkを使うだけです。あなたの質問を簡潔でテスト可能なサンプル入力と予想される出力を含めるように編集し、awkタグを追加すると、正しい方法で何をしたいのかを示すことができます。
あなたが必要とするすべてがあるように一方、それが聞こえる:
$ cat /usr/tmp/file
a
b
c
d
e
$ awk 'NR==3{print gensub(/.*\//,"",1,FILENAME)} 1' /usr/tmp/file
a
b
file
c
d
e
上記は、開いているファイルの3行目の前に現在のファイル名を挿入します。これはgensub()にGNU awkを使用し、sub()と変数だけを使用する他のawksを使用します。
- 1. ファイル名に基づいてテキストファイルに新しい列を挿入
- 2. シェルスクリプト内でSedを使ってファイルにテキストを挿入
- 3. SEDを使用して改行をファイルに挿入する
- 4. sedコマンドで日付を挿入
- 5. Sed、パターンマッチの後に行を挿入し、#
- 6. 複数のテキストファイルを挿入
- 7. HP-UXでsedを使用してファイルの先頭に行を挿入する
- 8. Sed複数の行を挿入
- 9. sedを使ってピリオドを挿入した後にスペースを挿入
- 10. 別のテキストファイルのsed
- 11. Powershellのテキストファイルにコンテンツを挿入する
- 12. テキストファイルに行を一括挿入する
- 13. テキストファイルに行を挿入するバッチ
- 14. sedを1つのライナーに挿入して、ファイル名から文字列を取り除く
- 15. SQL Server - バルク挿入なしでテーブルにテキストファイルを挿入するには
- 16. 追加/挿入するSed/Awkスクリプト?
- 17. Linuxにsedで数字を挿入していますか?
- 18. ファイル名パラメータ付き一括挿入
- 19. sedで新しい行とタブを挿入できません
- 20. PHPで生成された入力からテキストファイルに挿入
- 21. sedを使用して特殊文字を含むファイルの内容を挿入
- 22. sedにパスを含む変数を挿入する方法
- 23. - 私はSEDのパターンの前に行を挿入したいパターン
- 24. javascriptにファイル名のPHP値を挿入するには?
- 25. ファイル間に挿入
- 26. Pythonを使用してファイル名に文字を挿入する
- 27. テキストファイルからPowerShellで既存のExcelワークシートにテキストを挿入
- 28. Web SQLデータベースに行単位でテキストファイルを挿入する方法
- 29. sed特定の行にスペースを入れて行を挿入します
- 30. sed出力ファイル名のエスケープ文字列
環境に関する詳細情報を提供することをお勧めします。私は、シェル変数の置換を介してソリューションの提案を予測します。だから、使用しているシェルの種類を明記してください。また、他の情報も参考になるかもしれません(http://stackoverflow.com/help/mcve)。 – Yunnosch
はい、申し訳ありません。 Linux Ubuntu 16.04.2とGNU sed 4.2.2 – raysa