1

以下の問題を解決するのを手伝ってください。私はファイルを持っています:

mat rat
mat dog
mat matress

表示する必要があります

rat
dog
matress

sed出力を表示するコマンドをコーディングしました: sed "s/$up//g" ( $upwill contain mat) 。しかし、このコマンドを使用すると、次のような出力が得られます

rat
dog
ress

これを解決するにはどうすればよいですか?
助けてください。

4

4 に答える 4

0

使用するawk

awk '{print $NF}' inputFile

テスト:

$ cat text
mat rat
mat dog
mat matress

$ awk '{print $NF}' text
rat
dog
matress
于 2013-06-26T10:17:22.347 に答える
0

現在のコマンドは$up、行内の複数の出現や行の途中での出現を含め、任意の場所のすべてのインスタンスを削除します。

$up行の先頭のみ、およびそれが (空白で区切られた) 単語全体である場合にのみ一致させたい場合は、次のコマンドを試してください。

sed "s/^$up\>//"

GNU sed では、アサーション^は行頭と\>一致し、単語の終わり (非空白文字と空白文字の間のゼロ幅の「文字」) と一致します。

の前に空白がある可能性がある場合$upは、使用できます

sed "s/\(\s*\)$up\>/\1/"

これにより、空白のみが削除$upされ、すべての空白が保持されます。

とその後のテキストの間の空白を保持したくない場合は、1 つ以上の ( ) 空白文字 ( ) に一致するに$up置き換えることができます。つまり、\>\s\+\+\s

sed "s/^$up\s\+//"
sed "s/\(\s*\)$up\s\+/\1/"
于 2013-06-26T20:58:33.020 に答える