10

基本的に出力をこれに似たものに変えるsedおよびcutフィルターでgrepコマンドを使用しました

    this line 1


    this line 2


    another line 3


    another line 4

行間と行の前にスペースを入れずに出力を取得しようとしているので、次のようになります

    this line 1
    this line 2
    another line 3
    another line 4

| もう一つ追加したい | フィルター

4

6 に答える 6

12

このフィルターを追加して、行の先頭から空白を削除し、空白行を削除します。2つのsedコマンドを使用していることに注意してください。1つは先頭の空白を削除し、もう1つはコンテンツのない行を削除します。

| sed -e 's/^\s*//' -e '/^$/d' 

ウィキペディアのsedの記事に、dコマンドを使用して空白またはスペースのみを含む行を削除する例があります。私のソリューションでは、エスケープシーケンス\sを使用して、任意の空白文字(スペース、タブなど)に一致させます。ウィキペディアの例:

sed -e '/^ *$/d' inputFileName 
  • カレット(^)は行頭と一致します。
  • ドル記号($)は行末と一致します。
  • アスタリスク(*)は、前の文字の0回以上の出現に一致します。
于 2012-10-06T21:20:20.950 に答える
10

これは、trコマンドでも実行できます。そのようです

| tr -s [:space:]

または代わりに

| tr -s \\n

改行のみを削除したい場合は、各行の先頭にスペース文字を入れないでください。

于 2012-10-06T21:21:47.753 に答える
6

私はこれを短くて簡単にします:

sed 's: ::g'

これをコマンドの最後に追加すると、すべての空白が無効になります。たとえば、次のコマンドを試してください。

cat /proc/meminfo | sed 's: ::g'
于 2016-03-02T11:40:30.783 に答える
3

grepを使用することもできます。

... | grep -o '[^$(printf '\t') ].*' 

ここでは、空白以外の文字が少なくとも1つある行を印刷します。「-o」フラグを使用すると、一致のみが出力され、空白以外の文字で一致が開始されます。

編集:先頭の空白文字を削除できるようにコマンドを変更しました。

これがお役に立てば幸いです=)

于 2012-10-07T00:49:50.737 に答える
0
(whateverproducesthisoutput)|sed -E 's/^[[:space:]]+//'|grep -v '^$'

(に応じて、に置き換えることがsedできます)。[[:space:]]\s

于 2012-10-06T21:21:01.653 に答える