csvファイルがあり、 ";"後ろのすべてを削除して、科学論文のタイトルを含む最初の列を編集したいと思います。シンボル。
したがって、一般的なヘッダーの形式は次のようになります。
long scientific title here;other stuff I want to delete including the semicolon (no space between ; and the text)
タイトルを次のように作成したいと思います。
long scientific title here
sed
またはawk
(これが重要な場合はmacOSで)これをどのように達成しますか?
答え1
各行の最初のセミコロンの後のすべてのエントリを削除するには、次の手順を実行します。
そしてcut
:
cut -d';' -f1 file
-d';'
セミコロンを区切り記号として使用-f1
最初のフィールドを印刷
そしてawk
:
awk -F';' '{ print $1 }' file
次のようになりますcut
。入力フィールド区切り文字としてセミコロンを使用し、最初のフィールドを印刷します。
そしてsed
:
sed 's/;.*//' file
セミコロンと次の文字を空の文字列に置き換えます。
答え2
最初の列なので(GNU)sedで十分だと思いました。列区切り記号がタブであると仮定すると、次のようになります。
sed -E 's/^(.*);.*\t/\1\t/' file
答え3
オペレーティングシステムには、テキスト処理用の小型でシンプルなツールが多数含まれています。この場合は、以下を使用してくださいcut
。
cut -d; -f1 <FILE >tmpfile && mv tmpfile FILE