我有一个 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