タグ付けされた質問 「text-formatting」

awk、sed、perl、prなどのコマンドラインユーティリティを使用してテキストファイルをフォーマットすることに関する質問。printf形式の文字列には、[printf]タグを使用します。日付フォーマット文字列の場合、[date]。[text-processing]タグも参照してください。

3
「ASCIIテキスト、重ね打ち」ファイル形式の目的
Bashのソースコードをダウンロードした後、docディレクトリを参照していて、次のファイルに遭遇しました。 bash.1は、manページの構築に使用される通常のtroffファイルです。 bash.0これは、マニュアルページのプレーンテキストバージョンのようなものです。^Hバックスペース制御文字が自由に配布されているだけです。 これらの制御文字は、Git Webインターフェースによって提供される表現には表示されませんが、実際のファイルをダウンロードして、Vimなどのテキストエディターで調べることができます。 fileコマンドを実行するとbash.0、次の出力が出力されます。 bash.0: ASCII text, with overstriking これまでこのファイル形式に出くわしたことはありませんでしたが、その目的が何であり、どのように使用されるのか疑問に思っていました。「ASCIIテキスト、重ね打ち」というフレーズをWebで検索することは、あまり目を光らせませんでした。

1
jqスタンドアロンを使用してjsonをprettyprintする方法は?
現在、jqを使用してjsonファイルをきれいに印刷したい場合、次を使用します。 cat file.json | grep jq . それでも、私はjq、フォールバックすることなく引数としてファイル名を受け入れることを期待するでしょうcat。 マニュアルページには次のように書かれています: jq [オプション...]フィルター[ファイル...] ...デフォルトでは、jqは標準入力からJSONオブジェクトのストリーム(空白で区切られている)を読み取ります。1つ以上のファイルを指定できます。その場合、jqは代わりにそれらから入力を読み取ります。 まだ実行中: jq file.json キーが定義されていないコンパイルエラーをスローして失敗します。 実行中にファイルを追加するにはどうすればよいですjqか?

5
コマンドラインに印刷された行の間に改行を追加するにはどうすればよいですか?
メールログは非常に読みにくいです。コマンドラインに印刷された各行の間に空白行を出力するにはどうすればよいですか?たとえば、ログをgrepしているとします。そうすれば、複数のラップされた行が混同されることはありません。

4
Bashシェルスクリプトの出力の配置
私のスクリプト: date echo -e "${YELLOW}Network check${NC}\n\n" while read hostname do ping -c 1 "$hostname" > /dev/null 2>&1 && echo -e "Network $hostname : ${GREEN}Online${NC}" || echo -e "${GRAY}Network $hostname${NC} : ${RED}Offline${NC}" done < list.txt sleep 30 clear done 次のような情報を出力しています: Network 10.x.xx.xxx : Online Network 10.x.xx.xxx : Offline Network 10.x.xx.xxx : …


3
psのcputimeの出力をフォーマットします
ある期間にわたってプロセスのCPU使用率を監視できる(グラフを作成する)スクリプトを記述しようとしています。 これまでのところ、これは私が使用しているコマンドです ps -p $PROCID -o cputime,etimes 私の唯一の懸念は、cputimeの出力が[dd]hh:mm(または似たようなもので、今では頭の外では思い出せない)に見えることです。 秒単位で経過時間を取得するetime-> etimesのようなcputimeを秒単位でフォーマットする方法はありますか? 編集:これは私が現在受け取っている出力です 2-03:01:33 2653793 最初のパラメーターは、日-時間:分:秒ではなく、秒単位でフォーマットする必要があります。

4
ファイル名の番号に基づく特定の順序の猫ファイル
私は名前のファイルを持ってfile.88_0.pdb、file.88_1.pdb、...、file.88_100.pdb。私がしたいcatそれらので、file.88_1.pdb後に貼り付けますfile.88_0.pdb、file.88_2.pdb後にfile.88_1.pdb、というように。行う場合cat file.88_*.pdb > all.pdb、ファイルは次の順序で0 1 10 11 12 13 14 15 16 17 18 19 2 20...まとめられます0 1 2 3 4 5 6...。

2
区切り文字の前にn文字がないすべての行を削除します
私は非常に長いテキストファイル(ここから)を作成し、6つの16進文字と「改行」(1つの文字として表示され、以下のコードマークダウンに適切に表示されないようです)とそれに続くいくつかの単語を含める必要があります。 00107B Cisco Systems, Inc 00906D Cisco Systems, Inc 0090BF Cisco Systems, Inc 5080 Cisco Systems, Inc 0E+00 ASUSTek COMPUTER INC. 000C6E ASUSTek COMPUTER INC. 001BFC ASUSTek COMPUTER INC. 001E8C ASUSTek COMPUTER INC. 0015F2 ASUSTek COMPUTER INC. 2354 ASUSTek COMPUTER INC. 001FC6 ASUSTek COMPUTER INC. 60182E ShenZhen Protruly Electronic Ltd …

4
固定幅でマニュアルページを印刷する
コマンド例では man apropos > outputfile のフォーマットされたmanページを含むテキストファイルが生成されます(太字など、画面aproposにman apropos直接印刷する場合との違いが少しあります)。 しかし、すべての段落がその幅に揃えられるように、生成された出力ファイルの最大行幅を手動で設定したいと思います。 manページは次の方法で作成されますgroff。たとえば、.ll 50元の.gz manソーステキストファイルの段落の前に配置しようとしましたが、複数のmanページで作業する必要がある場合は簡単です。さらに、すべての文字が認識されるわけではありません。 apropos.1:45: warning: can't find character with input code 195 apropos.1:45: warning: can't find character with input code 168 apropos.1:47: warning: can't find character with input code 178 apropos.1:131: warning: can't find character with input code 169 なので、もっと簡単な方法はあるのかな。の作成中に最大線幅を変更するにはどうすればよいoutputfileですか?特定のコマンドはありますか? 編集: (以下のすべての考慮事項はUbuntu …

1
テキストを列にフォーマットする
以下に示すように、2つの列を持つファイルがあります(例)。 ファイル1: John 1 Peter 2 Michael Rod 3 Su 7 Louise 9 これをフォーマットする必要があり、予想される出力は次のようになります。 ファイル1: John 1 Peter 2 Michael Rod 3 Su 7 Louise 9

4
awkを使用して、可変数のフィールドを持つファイルの最初の列の幅を変更します
awkのprintf関数の使用方法は理解していますが、すべてのフィールドを指定する必要はありません。 たとえば、これが私のファイルだとします。 c1|c2|c3|c4|c5 c6|c7|c8|c9|c10 c11|c12|c13|c14|c15 すべてのレコードの最初のフィールドがc11の幅になるようにフォーマットします-最初のフィールドで最も長いセル: c1 |c2|c3|c4|c5 c6 |c7|c8|c9|c10 c11|c12|c13|c14|c15 指定できることを理解しています: awk -F"|" '{printf "%-3s%s%s%s%s\n", $1, $2, $3, $4, $5}' file > newfile 最初の列の幅を知りたいが、ファイル内のフィールド数がわからないとします。基本的に私は次のようなことをしたいです: ... '{printf "%-3s|", $1}' ...その後、残りのフィールドを元の形式で印刷します。

5
アンダースコアをカンマで置き換え、CSVで二重引用符を削除する
私はCSVファイルを持っています input.csv "1_1_0_0_76" "1_1_0_0_77" "1_1_0_0_78" "1_1_0_0_79" "1_1_0_0_80" "1_1_0_0_81" "1_1_0_0_82" "1_1_0_0_83" "1_1_0_0_84" "1_1_0_0_85" ............. 等々。 このCSVファイルをに変換する必要があります result.csv 1,1,0,0,76 1,1,0,0,77 1,1,0,0,78 1,1,0,0,79 1,1,0,0,80 1,1,0,0,81 1,1,0,0,82 1,1,0,0,83 1,1,0,0,84 1,1,0,0,85


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 …
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.