bashでsedまたはawkを使用してcsvの最初の列を編集する

bashでsedまたはawkを使用してcsvの最初の列を編集する

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

関連情報