行の一部を抽出してソートします。

行の一部を抽出してソートします。

私の出力は次のようになります。

[test output] my name is bob this is a random string
[test output] my name is jim this is a randong string2
[test output] my name is bob this is a randong string3
[test output] my name is alice this is a randong string4
[test output] my name is bob this is a randong string5
[test output] my name is dave this is a randong string6
[test output] my name is jim this is a randong string7
[test output] my name is jim this is a randong string8

予想出力:

my name is bob
my name is jim
my name is alice
my name is dave

上記の内容を名前ごとに1行ずつ出力しようとしました。名前の後に任意の文字列を含めることができます。どの順序で表示されるかは問題ではありません。

誰でも助けることができますか?

答え1

そしてawk

awk '{ s = $3" "$4" "$5" "$6 };!(s in a){a[s];print s}' <file

答え2

出力の並べ替えが気に入らない場合は、次のようにcutすることもできますsort

cut -d' ' -f3-6 file | sort -u
  • -dat はcut区切り文字を指定します。あなたの場合は空白です。
  • -fatはcut出力するフィールドを指定します。あなたの場合、3から6までのすべてのフィールドが必要です。
  • -u出力時に、sort同じラインの最初のラインのみが出力されます。

答え3

また、sed使用することができます

sed -e 's/^.*] //g' -e 's/ this.*$'//g file | sort -u

関連情報