我有一个 21 列的 csv 文件。我正在处理第二列。我想删除/删除数字的第一部分,下划线之前的部分。并保留其余值。
示例数据集(前三列(
page_name post_id page_id
A 86680728811_272953252761568 86680728811
A 86680728811_273859942672742 86680728811
B 86680728033_281125741936891 86680728033
B 86680728033_10150500662053812 86680728033
期望的输出
page_name post_id page_id
A 272953252761568 86680728811
A 273859942672742 86680728811
B 281125741936891 86680728033
B 10150500662053812 86680728033
我尝试使用 \1 方法和正则表达式来删除我不想要的部分并保留字符串的其余部分。
cat FB_Data.csv | LC_ALL=c sed -Ee 's/.*D(post_id)/1post_id/' -e 's/_/,/'
但是由于未知原因,此方法拆分了第一列的标题,并添加了一个名为"name"的新列,其值为 page_id。
我也尝试了带有awk的sub,但它不起作用
awk -v "OFS=," '{$2=$2;sub(/[0-9]*_/, $2, $2); print}' FB_Data.csv>output.csv
任何提示都会有所帮助。我已经被困了两天,试图解决这个问题。谢谢
使用 awk,sub
直接修改目标(第三个参数(,如下所示:
awk '
{
sub("[0-9]+_","",$2);
print
}' FBdata.csv