奇数行に表示される特定の文字の後のすべてのテキストを削除する

奇数行に表示される特定の文字の後のすべてのテキストを削除する

すべての奇数行に表示される特定の文字の後のすべてのテキストを削除します。

これはsedファイルのすべての行で機能します。

sed 's/;.*//' 

すべての奇数行のみを処理するようにこのsed行をどのように編集できますか?

ベストアンサー1

GNUの使用sed:

$ sed '1~2s/;.*//' file

アドレス範囲は1~2ライン 1 と一致し、その後は他のすべてのラインと一致します。一般的なケースは、first~stepマニュアルの例がすべてのsed -n 1~2p奇数行を印刷することです。

これはGNU拡張です。

以下の該当するコンテンツawk:

$ awk 'NR % 2 { sub(";.*", "") } { print }' file

またはArrowがコメントで提案したように:

$ awk -F';' 'NR % 2 { $0 = $1 } { print }' file

同じ効果がありますが、最初の項目以降のすべての内容を明示的に置き換えるのではなく、フィールド区切り文字として使用されます(フィールドを;使用)。;-F';'

おすすめ記事