use*_*154 11 awk field cut sed text-parsing
我有一个管道分隔字段的文件.我想打印字段1的子集和字段2的全部:
cat tmpfile.txt
# 10 chars.|variable length num|text
ABCDEFGHIJ|99|U|HOMEWORK
JIDVESDFXW|8|C|CHORES
DDFEXFEWEW|73|B|AFTER-HOURS
Run Code Online (Sandbox Code Playgroud)
我希望输出看起来像这样:
# 6 chars.|variable length num
ABCDEF|99
JIDVES|8
DDFEXF|73
Run Code Online (Sandbox Code Playgroud)
我知道如何获得字段1和2:
cat tmpfile.txt | awk '{FS="|"} {print $1"|"$2}'
Run Code Online (Sandbox Code Playgroud)
并知道如何获得字段1的前6个字符:
cat tmpfile.txt | cut -c 1-6
Run Code Online (Sandbox Code Playgroud)
我知道这很简单,但我无法弄清楚如何组合awk和cut命令.
任何建议将不胜感激.
dev*_*ull 14
你可以用awk.使用该substr()函数修剪第一个字段:
awk -F'|' '{print substr($1,1,6),$2}' OFS='|' inputfile
Run Code Online (Sandbox Code Playgroud)
为了您的输入,它产生:
ABCDEF|99
JIDVES|8
DDFEXF|73
Run Code Online (Sandbox Code Playgroud)
使用sed,你可以说:
sed -r 's/^(.{6})[^|]*([|][^|]*).*/\1\2/' inputfile
Run Code Online (Sandbox Code Playgroud)
产生相同的输出.