我有一个10000行文件,每行包含一个“data:key”形式的字符串,它也用8个字符右边填充,其中':'是分隔符。我试图在Linux中使用awk在自己的行上打印这些对,因此第1行=数据和第2行=键,我使用命令实现了这一点:
awk -F:'{print $ 1;打印$ 2}'< 〜/ prices.txt
我的问题发生在每组的第二行。由于某种原因,它填充了与从行中删除数据时一样多的空白。因此,如果我的行是“26900:9976”,则第一行将是“26900”,第二行将是' 9976'
,包括空格。
如果好奇,我想这样做,因为我将结果传递给db_load以在B + -tree中使用。
答案 0 :(得分:0)
不完全是你的答案,但你可以使用tr:
tr ':' '\n' < input
我也没有看到你用awk命令描述的行为,但是,你总是可以在管道中添加一个sed来删除前导空格:
tr ':' '\n' < ~/prices.txt | sed 's/^[ \t]*//'
awk -F: '{print $1; print$2}' < ~/prices.txt | sed 's/^[ \t]*//'
答案 1 :(得分:0)
您可以使用正则表达式作为字段分隔符:冒号后跟零个或多个空格字符将分隔字段。
awk -F ':[[:space:]]*' '{print $1; print $2}' < ~/prices.txt