sedを使用して各行の先頭にテキストを挿入する 質問する
sedを使って挿入するにはどうすればいいでしょうか? rm -rf ファイルの各行の先頭に?
sedを使って挿入するにはどうすればいいでしょうか? rm -rf ファイルの各行の先頭に?
party.txt次のような内容を含む次のファイルがあります。 Hello Jacky Hello Peter Bye Johnson Hello Willy Bye Johnny Hello Mary Hello Wendy grep helloコンテンツをキャプチャするためにを使用しましたが、 を使用しprint date +"%Y-%m-%d'てそれに追加すると、それができず、1 行あたりに多数のコンテンツが取得されます0。 cat party.txt | grep Hello | awk '{ print date +"%Y-%m-%d"}' 何が欠けているのでしょうか?
次の形式のデータセットがあります 最初のフィールドと 2 番目のフィールドは、調査の開始日と終了日 (M/D/YYYY) を示します。 AWK または BASH スクリプトを使用して、うるう年を考慮しながらデータを目的の出力形式に拡張するにはどうすればよいでしょうか? あなたの助けにとても感謝しています。 入力 7/2/2009 7/7/2009 2/28/1996 3/3/1996 12/30/2001 1/4/2002 望ましい出力 7/7/2009 7/6/2009 7/5/2009 7/4/2009 7/3/2009 7/2/2009 3/3/1996 3/2/1996 3/1/1996 2/29/1996 2/28/1996 1/4/2002 1/3/2002 1/2/2002 1/1/2002 12/31/2001 12/30/2001
以下のコマンドを試しました: awk '/search-pattern/ {print $1}' 上記のコマンドの else 部分はどのように記述すればよいですか?
.csv ファイルの最後にはパラグラフ ブレークがあります。次のコマンドを使用して、ファイルの末尾にある空白行を削除しようとしました。 sed -i '/^$/d' combined.csv しかし、それは機能せず、空白行がまだ残っています。次のコマンドを使用して最後の行を削除できます。 sed -i '$d' combined.csv しかし、最後の行を削除する前に、それが本当に空であるかどうかを確認することは可能ですか? アップデート: 次のコマンドを使用して、各行が数字で始まっているかどうかを確認します。 sed -i '1s/^[^0-9]*//' combined.csv これは最初の行のみをチェックし、残りの行はチェックしません。ファイル内のすべての行をチェックするにはどうすればよいでしょうか? これで問題が解決するかもしれません。
現在、テキスト ファイルの行の 2 番目の単語 (CRISTOBAL) を抽出する必要があります。 * CRISTOBAL AL042014 08/05/14 12 UTC * 「CRISTOBAL」という行の 2 番目の単語は日によって変わるので、行から 2 番目の単語/文字だけを抽出する方法を見つける必要があります。
文字列内に単語のリストがあります: str="SaaaaE SeeeeE SbbbbE SffffE SccccE" それを逆にして "SccccE SffffE SbbbbE SeeeeE SaaaaE" どうすればそれができるのでしょうかash?
私は bash スクリプトの初心者です。複数の json ファイルを結合するスクリプトを書こうとしました。例: ファイル1: { "file1": { "foo": "bar" } } ファイル2: { "file1": { "lorem": "ipsum" } } 結合されたファイル: { "file1": { "foo": "bar" }, "file2": { "lorem": "ipsum" } } 私が思いついたのはこれです: awk 'BEGIN{print "{"} FNR > 1 && last_file == FILENAME {print line} FNR == 1 {line = ""} FNR==1 && FNR != NR {printf ","} FNR > 1 {line = $0} {last_file = FILENAME} END{print "}"}' json_files/* > json_files/all_merged.json うまく動作しますが、もっと良い方法があると思います。何かアイデアはありますか?
次のコマンドを実行すると、 echo "1: " | awk '/1/ -F ":" {print $1}' AWK がなぜ次のように出力するのか: 1: ?
次のawkコードがあります。まず、ヘッダー行で目的のフィールド番号を決定してから、そのフィールドの出力を印刷します。問題は、関心のあるフィールド番号を維持するために連想配列を使用しているため、を使用する代わりにループ内でそれを印刷することforです。問題は、行の末尾に区切り文字を追加することです。printprintf この問題を解決する簡単な方法はありますか? (いいえ。例えば出力を再実行して追加の区切り文字を削除しますか?それとも、数値が配列に格納されているフィールドを印刷するより良い方法はありますか? awk ' BEGIN { FS = ","; OFS = "," no_headers = 2; headers[1] = "header1"; headers[2] = "header3" k = 0 } NR==1 { for (i=1; i<=no_headers; i++) { for (j=1; j<=NF; j++) { s = gensub(/"/, "", "g", $j) if (s==headers[i]) { col_no[++k] = j } } } } NR>1 { for (i=1; i<=k; i++) { printf "%s,", $col_no[i] } print "" }' test_awk.txt テストファイルは次のとおりです "header1","header2","header3","header4" "a","b","c",4 1,"b",,"d" "a","2","c","d" 私の現在の出力は次のとおりです "a","c", 1,, "a","c", しかし、私はこのように見たいです(つまり、末尾の区切り記号なし) "a","c" 1, "a","c"
Linux に 2 つのファイルがあり、最初のファイルには 4 列、2 番目のファイルには 2 列あります。これらのファイルを、ファイル 1 の最初の 3 列とファイル 2 の最初の列を含む新しいファイルに結合したいと考えています。awk を試しましたが、ファイル 2 のデータがファイル 1 の下に置かれました。