7 コマンドラインからファイルのすべての行の先頭に文字列を追加する最も簡単な方法は何ですか? すべての行の先頭に文字列を追加する方法を探しています(すべての行に同じ文字列)。カスタマイズ可能なものではなく、覚えやすく、すべてのPOSIX準拠プラットフォーム(およびすべてのシェル)で利用できるもの。 8 text-processing awk sed perl
4 SEDまたはAWKを使用して、テンプレートファイルのプレースホルダーを、特殊文字を含む可変コンテンツに置き換えるにはどうすればよいですか? CentOS 6.3 (内部レポートの目的で)本文に電子メールヘッダーのコピーを含む電子メールを送信する小さなスクリプトを取得しようとしています。 テンプレートファイルには以下が含まれます。 Alert Report Alert has triggered at TMPDATE HEADERS ------- TMPHEADERS SOURCE IP --------- TMPSOURCEIP スクリプトで「TMP」プレースホルダーを見つけて、アラートに関連する実際の情報に置き換えたい。 日付およびソースIP変数は正常に機能しているようですが、TMPHEADERSを検索または置換しようとすると、出力全体が空白になるなど、奇妙な症状が発生します。多くの特殊文字(@%&など)を含むヘッダーに関係していることは、かなり確実です。 誰かがこれをbash経由で達成するための最善の方法についてアドバイスできますか? 私の現在のコードは次のようになります: cat /test/emailtemplate | sed s/TMPHEADERS/"$HEADERS"/ > /test/output 更新 リクエストに応じて、テンプレートファイルに挿入しようとしている一連のヘッダーの例を次に示します(無害なIPアドレスを保護するためにIPアドレスと電子メールアドレスが変更されました:-))。 From foo@yahoo.com Thu Apr 25 20:18:19 2013 Return-Path: <foo@yahoo.com> Received: from nm30-vm0.bullet.mail.ne1.yahoo.com (nm30-vm0.bullet.mail.ne1.yahoo.com [98.138.11.36]) by serv.example.com (8.14.4/8.14.4) with ESMTP … 8 text-processing sed awk
5 コマンドラインからすべての行の最初と最後の文字を削除する テキストファイルのすべての行の最初と最後の文字を削除して、切り捨てられたバージョンを新しいファイルに保存しようとしています。awk特に誰かが大きなファイルのために効率的に使用したり、他のLinuxプログラム/コマンドを実行したりする方法について誰かが知っていますか? input.txt (s,2,4,5,6) "s,1,5,5,2" {z,0,4,5,3} [y,2,4,5,5] (y,4,4,5,7) (r,20,4,5,7) (e,9,4,5,2) 予想されるoutput.txt s,2,4,5,6 s,1,5,5,2 z,0,4,5,3 y,2,4,5,5 y,4,4,5,79 r,20,4,5,7 e,9,4,5,2 8 text-processing sed awk
2 awkでシェル変数を使用する これが私のスクリプトです(指定されたパターンを含むファイルを見つけるため): find . -type f \ -exec awk -v vawk="$1" '/'"$vawk"'/ {c++} c>0 { print ARGV[1]; exit 0 } END { if (! c) {exit 1}}' \{\} \; 引数付きのスクリプトを使用したい§: MyScript.sh pattern 私の問題は、$1変数をに入れることができないことawkです。 スクリプトをデバッグしようとすると bash -x MyScript.sh pattern これが出力です: + find . -type f -exec awk -v vawk=pattern '// {c++} c>0 … 8 bash awk variable
2 2つのファイルを結合するためのシェルスクリプト shell script2つのファイルAとを取得するを記述して、次のBような結果を取得します。 ファイルA: user_a tel_a addr_a user_b tel_b addr_b ファイルB: process_1 user_a process_2 user_a process_3 user_b そしてその結果: user_a process_1 tel_a addr_a user_a process_2 tel_a addr_a user_b process_3 tel_b addr_b これどうやってするの?awkまたは、他の何か? 8 text-processing awk join
3 同じawkアクションを異なるファイルに適用する方法は? 私はawkの初心者で、これを行うawkスクリプトを作成できるかどうかはわかりません。 何百ものデータファイルを並べ替える必要があります。それぞれについて、次のワンライナーを使用します。 awk 'ORS=NR%3?" ":"\n" ' file1.tex > file1_sorted.tex awk 'ORS=NR%3?" ":"\n" ' file2.tex > file2_sorted.tex ... 必要な出力が得られます。ただし、このアクションを自動化して、各ファイルを取得し、アクションを適用して、対応するソート済みファイルを書き込むスクリプトを作成したいと思います。 よろしくお願いします! 8 shell awk
6 タブ区切りデータをコンマ区切りデータに変換するにはどうすればよいですか? アマゾンのec2コマンドラインツールを介してec2スナップショットのリストをリクエストしています。 ec2-describe-snapshots -H --hide-tags > snapshots.csv データは次のようになります。 SnapshotId VolumeId StartTime OwnerId VolumeSize Description snap-00b66464 vol-b99a38d0 2012-01-05 5098939 160 my backup リダイレクトする前にデータを傍受snapshots.csvし、次のことを行うにはどうすればよいですか。 「タブ」をコンマに置き換えます 引用符で値をカプセル化する 値がすべて数値の場合は、プレフィックスとしてを付けて、=Excelでテキストとして扱われるようにします。たとえばOwnerId、"=5098939"にする必要があります(これはインラインで実行できず、代わりにスクリプトファイルまたは関数が必要な場合は必要ありません)。 望ましい出力: "SnapshotId","VolumeId","StartTime","OwnerId","VolumeSize","Description" "snap-00b66464","vol-b99a38d0","2012-01-05","=5098939","=160","my backup" 8 shell-script text-processing sed awk csv
6 AWK:行を72文字に折り返す $ awk 'length > 72' {HOW TO PRINT THE LINEs IN PCS?} msg つまり\n、72文字後に追加して続行したいので、最初にすべてのを削除し\nて追加する必要がある場合があります。他のツールを使う方が簡単かもしれませんが、試してみましょう。 [更新] ウィリアムソンは正しい答えを提供しましたが、それを読むためにいくつかの助けが必要でした。以下の簡単な例で問題をいくつかの部分に分けます。 以下のコード\tが両方のケースで印刷されるのはなぜgsubですか?xはダミーファイルであり、最後に奇数の0があります。 ウィリアムソンの返信の行line = $0 \n more = getline \n gsub("\t"," ")を攻撃して、明らかに値がポップされている間、標準出力全体が表示されますよね?linemore$0 パート1のコード $ gawk '{ hallo="tjena\t tjena2"; gsub("\t"," "); }; END {print hallo; gsub("\t", ""); hallo=hallo gsub("\t",""); print hallo }' x tjena tjena2 tjena … 7 awk text-formatting
2 ファイルを入力として別のファイルでawkコマンドを実行するBashスクリプト 1つのファイルを取り、各行を別のファイルで実行されるawkコマンドの文字列として実行するスクリプトを記述しようとしています。これが私がこの時点で持っているものです。 #!/bin/bash FILE=$1 FILE_TO_SEARCH=$2 exec 4> "FILE_TO_SEARCH" while read -ru 3 LINE; do awk -v RS='' -v ORS='\n\n' "$LINE" <&4 done 3< "$FILE" スクリプトを実行しようとすると、次のようになります。 ./bashscript2.sh: line 8: read: read error: 3: Bad file descriptor 検索するファイル(FILE)の例は、次のような内容になります。 hostAbC host123 host345 hostMos hostDef 次に、ファイル(FILE_TO_SEARCH)に対してawkコマンドを実行しますが、その内容は以下のようになりますが、さらに多くの点が異なります。 * * * * * * * * * … shell-script awk