検索コンテンツの下にテキストが書かれている1 file.txtをがあるとしますユニークワード
ABC/xyz
ABC/xyz/rst
EFG/ghi
私が最初/
前に最初のユニーク単語を抽出することができ、シェルスクリプトを記述する必要があります。
出力として、ABC
とEFG
を1つのファイルに書きたいとします。
検索コンテンツの下にテキストが書かれている1 file.txtをがあるとしますユニークワード
ABC/xyz
ABC/xyz/rst
EFG/ghi
私が最初/
前に最初のユニーク単語を抽出することができ、シェルスクリプトを記述する必要があります。
出力として、ABC
とEFG
を1つのファイルに書きたいとします。
これを試してみてください:
cat file.txt | tr -s "/" ' ' | awk -F " " '{print $1}' | sort | uniq > outfile.txt
あなたは-u
(のための "ユニーク")オプションでsort
に、その後cut
(区切り文字としてスラッシュ)、パイプとの最初の単語を抽出することができます。
$ cut -d '/' -f 1 file.txt | sort -u
ABC
EFG
出力をファイルにするには、コマンドに> filename
を追加してリダイレクトするだけです。 (またはパイプ出力を参照してファイルにそれを得るためにtee filename
に。)
あなたがカットのミックスを使用し、そのように並べ替えることができます。
cut -d '/' -f 1 file.txt | sort -u > newfile.txt
最初の行がされるまでの任意の文字列をつかみますスラッシュ/
を入力し、newfile.txtに出力します。 2行目はテキストをソートし、重複する文字列を削除します。
あなたは確かに 'cut -d '/' -f 1 file.txt |並べ替え| uniq -u> newfile.txt' - OPは*ファイル*で彼の出力を望んでいるので。また、 'sort -u'は' uniq'への呼び出しを完全に削除することを可能にします。 –
@NiallCosgroveはい、間違ったコマンドで一意の結果を追加しました。uniq -uコマンドは、文字列の最初の出現を含むすべての重複を削除することに気付きました。これは私の間違いです。 – TheGirrafish
もう一つの興味深いバリエーション:
awk -F'/' '{print $1 |" sort -u" }' file.txt > outfile.txt
ない、それはここで問題が、パイプにできることとawkの中にリダイレクトすることは非常に便利なことができるという。
もう一つの簡単な方法:あなたがここに `tr`だけではなく、` awkの-F '/' を `使用する理由
cut -d"/" -f1 file.txt|uniq > out.txt
'cat'は不要ですが、ファイルの後半で以前の文字列を繰り返していても、文字列が違う場合は機能しません。例: 'ABC/xxx \ nEFG/yyy \ nABC/zzz' – user1934428
@ user1934428-これは' cat'なしで済んでいた可能性があることに同意しましたが、コマンドの問題はどこにありますか。与えられた入力で必要な出力を生成します。しかし、私の答えを編集して猫を取り除き、より効率的にしました。 – syadav
これは、質問をした人とは異なる「ユーザ」です; –
あなたは説明できますか? –
ちょっとquik、random&posibleな解決策の何百もの間で働いています:) –