Sed 修剪第n列的末尾

Sed 修剪第n列的末尾,sed,awk,Sed,Awk,我有表格结构: ouw.txt 478 4247 3列&很多行 我想修剪“.txt”-第#1列的最后4个字符(使用awk、sed) 我知道斩线的末端在这里被覆盖了好几次,但我不知道如何进入第n条线的末端 根据您的示例输入,这样做可以: sed 's/\.txt//' filename 如果我只想对第一个删除空格的列进行操作,我会使用awk或shell: while read -r col1 col2 col3; do printf "%s %s %s\n" "${col1%.txt}"

我有表格结构:

ouw.txt 478 4247

3列&很多行

我想修剪“.txt”-第#1列的最后4个字符(使用awk、sed)


我知道斩线的末端在这里被覆盖了好几次,但我不知道如何进入第n条线的末端

根据您的示例输入,这样做可以:

sed 's/\.txt//' filename
如果我只想对第一个删除空格的列进行操作,我会使用awk或shell:

while read -r col1 col2 col3; do
    printf "%s %s %s\n" "${col1%.txt}" "$col2" "$col3"
done < filename
读取时-r col1 col2 col3;做
printf“%s%s%s\n”“${col1%.txt}”“$col2”“$col3”
完成<文件名

如果要删除第1列的最后4个字符:

awk '{sub(/....$/, "", $1)} 1' filename
如果列之间用空格分隔,而不是用制表符分隔:

sed 's/.... / /' filename
或者在“第一个制表符之前的最后四个非制表符”的一般情况下,
s/[^\t][^\t][^\t][^\t]\t/\t/
(如果您的
sed
不理解这种方便的表示,您可以用文字制表符代替
\t
)。不过,这很有说服力;如果第一个字段少于四个字符,则会得到意外的结果。(然后可以锚定表达式;
s/^\([^\t]*\)[^\t][^\t][^\t][^\t][^\t]\t/\t/