問題タブ [sed]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
shell - ファイル内の行に番号を付けるシェル スクリプト
awk や sed などのツールを使用して、特定の方法でファイル内の行に番号を付けるためのより高速な方法を見つける必要があります。各行の最初の文字に、1、2、3、1、2、3、1、2、3 などのように番号を付ける必要があります。
たとえば、入力が次の場合:
出力は次のようになります。
これが私が持っているものの一部です。$lines は、データ ファイルの行数を 3 で割った値です。したがって、21000 行のファイルの場合、このループを 7000 回処理します。
基本的に、これは一度に 3 行を取得し、それらに番号を付けて、出力ファイルに追加します。それは遅いです...そして、いくつか!これを行うための別のより高速な方法を知りません...何か考えはありますか?
regex - 正規表現に一致するファイルの最初の行をすばやく見つけるにはどうすればよいですか?
Perl スクリプト内で正規表現を使用して、ファイル内の行を検索したいと考えています。
grepがインストールされているシステムにあると仮定すると、次のことをお勧めします。
- コマンド
grepを介して外部を呼び出すopen() open()ファイルを直接開き、whileループとif ($line =~ m/regex/)?を使用します。
python - Perl、Python、AWK、sed の違いは何ですか?
それらの主な違いは何ですか?また、各言語を使用するのに適した典型的なシナリオはどれですか?
linux - 複数行の検索を行い、スクリプトで置換する方法は?
Pythonソースファイル内のすべての複数行インポートを置き換えようとしています..したがって、ソースは次のようになります
そして、私は次のようなものを手に入れたいです
sed を使用しようとしましたが、閉じ括弧の非貪欲な一致をサポートしていないように見えるため、2 番目のインポートを「食べます」.. :(
ヒントはありますか?これは sed では不可能ですか?別のツールで試す必要があります?
bash - 番号が常に同じではない場合、複数のファイルで番号をインクリメントするにはどうすればよいですか?
この行を含むファイルがいくつかあります
すべてのファイルでXをインクリメントしたい。
Xがファイル間で一定である場合、bashスクリプトをファイルの周りでループさせて実行することができます(以前のリリース番号を含む$ 1と新しいリリース番号を含む$2、つまり$ 1 + 1):
では、ファイル間でリリース番号が異なる場合はどうすればよいですか?
sedで実行できますか?
別のツールを使用する必要がありますか?
bash - 1 回のパスでファイルにプレースホルダーを入力する
プレースホルダー文字列を含むスケルトン テキスト ファイルがあります。
等々。プレースホルダーの特定の「形式」は問題ではありません。特定の実装に最も適したものに変更する場合があります。
プレースホルダーの値がわかっている bash スクリプトがあり、プレースホルダーを値に置き換えて新しいファイルを生成する必要があります。
これを sed で複数回実行することもできますが、面白くありません。Perl は使いたくありません。textutils と bash 自体のみを使用したい。
1 回のパスでやりたいことを実行する最善の方法は何ですか?
string - sed 置換パターンの文字列をエスケープする
私のbashスクリプトには、sedパターンで使用する必要がある外部(ユーザーから受け取った)文字列があります。
リテラル置換として$REPLACE安全に受け入れられるように、文字列をエスケープするにはどうすればよいですか?sed
注:はKEYWORD、一致しないなどのダム部分文字列です。ユーザーが提供するものではありません。
windows - Vistaでsed - 間のすべてのシンボルを削除する方法は?
あるファイルの一部を削除して別のファイルに保存するために使用するバットファイルがあります。テキスト「[aaa bbb]」と「[ccc ddd]」の間のすべての記号を削除する必要があります。それは私がテキストを持っている場合です:
私は出力として持っている必要があります:
ありがとうございました
編集:質問を明確にしたいと思います。マーカー 1 とマーカー 2 の間のすべてのシンボルを削除する必要があります。Marker1 と Marker2 は単なる単語またはテキストの一部ですが、必須の行ではありません。たとえば、次のようになります。
[aaa bbb] と [www yyy] の間のテキストを削除したい場合は、次のように出力する必要があります。
windows - ファイル内のテキストを検出して削除する Windows コマンド
私はASCIIファイルを持っていて、そこのどこかに行があります:BEGINとその後の行:END
Windowsのコマンドライン呼び出しから、これら2行とその間のすべてを削除できるようにしたいと思います。これは完全に自動化する必要があります。
編集: Vista で sed を参照してください - 間のすべてのシンボルを削除する方法は? sed を使用してこれを行う方法の詳細については (cygwin には sed があります)。
編集: SED が機能している可能性があることを発見しましたが、出力をファイルにパイプすると、改行が削除されました。どうすればこれらを保持できますか? この sed 正規表現を使用する:
/^GlobalSection(TeamFoundationVersionControl) = preSolution$/,/^EndGlobalSection$/{ /^GlobalSection(TeamFoundationVersionControl) = preSolution$/!{ /^EndGlobalSection$/!d } }
.. 開始セクションは 'GlobalSection(TeamFoundationVersionControl) = preSolution' で、終了セクションは 'EndGlobalSection' です。これらの行も削除したいと思います。
編集:私は今、sedにもっと簡単なものを使用しています:
/^GlobalSection(TeamFoundationVersionControl) = preSolution$/,/^EndGlobalSection$/d
改行はまだ問題ですが
bash - maildir ヘッダーの問題
maildir ファイルの mtimes を更新する次の bash スクリプトがあります。
このスクリプトは、次のような標準ヘッダーで常に正常に機能します。
2007年の配達日があります。ファイルの日付が今日からになるようにそのファイルに触れてからスクリプトを実行すると、ファイルの日付は受信した日付に復元されます。
ただし、次のヘッダーを持つ電子メールでスクリプトを実行しようとすると:
日付は明らかに復元されていません。ヘッダーが明らかに異なっていることはわかりません。多くのメール クライアントが filetime を使用して受信した時刻として表示するため、mtimes をリセットする必要があります。私のスクリプトは 3000 通以上の電子メールで機能し、サーバーを移動した後、すべてのクライアントが正しい順序で電子メールを表示し、すべてのファイルが同じ日付で表示されるようにしましたが、何らかの理由で特定の電子メールでは機能しません。スクリプトから明らかなことを残しましたか?
編集: 日付は明らかにスクリプトから復元されますが、mtimes に依存するクライアントは、スクリプトが日付を設定したものに関係なく、このメッセージを表示しません。権限は同じで、レイアウトやファイル名の形式も同じです。以下は ls -la からの投稿です
正しく表示されないのは上から2番目のファイルです。なぜこれが起こっているのかをデバッグする方法はありますか?