次の行で構成されるファイルがあるとします。
12345567 7878 66 語3 t45t y6y46y 4年6年656年y5年 46y6 65y7 y66uyuy yy46y6y
出力は次のようになります。
66 y6y46y y5y y66uyuyy y46y6y
sed 's/.* //g'
filenameコマンドとは異なる複数のコマンドを試しましたが、sed
機能しません。
正確な命令が何であるかがわかりますかsed
?
答え1
あなたは試すことができます:
sed 's/.* //'
awk '{print $NF}'
ファイルにスペースで終わる行がある場合は、あらかじめ対応する末尾のスペースを削除できますsed 's/ +$//'
。これら2つの操作を1行にまとめることができます。
sed -e 's/ +$//' -e 's/.* //'
答え2
awk '{print $NF}'
sed 's/[[:blank:]]*$//;s/.*[[:blank:]]//'
awk
これはまだ空白行ごとに空白行を印刷します(as演算子を含む行全体は$
0に適用され、完全なレコードを生成します)。これを防ぐには:
awk 'NF{print $NF}'
sed 's/[[:blank:]]*$//;s/.*[[:blank:]]//;/./!d'
答え3
変数awk
は$NF
各レコードの最後のフィールド;これにより、次のようにファイルの最後のフィールドのみを印刷できます。
awk '{print $NF}' file
答え4
grep
代わりに、次の適切なパターンを使用できますsed
。
grep -o "[a-Z0-9]*$"
この例には、[...]
「単語」に適していると見なされる文字範囲が含まれています(この場合は英数字、追加の記号を追加でき、その一部はエスケープする必要があります)。