![](/img/trans.png)
[英]Linux : How can I print line number and column number when values do not match for tab separated files using AWK in linux
[英]Print variables separated by “-” using awk
我試圖在兩個以“ - ”分隔的值之間打印所有數字。 我有一個包含多行的文檔,如下所示:
14 - 19 |
45 - 50 |
我希望得到如下結果:
14 15 16 17 18 19
45 46 47 48 49 50
但是我仍然在同一行中獲取所有值,盡管我已經設置了ORS和OFS。
有什么我可能會失蹤的嗎?
#!/bin/bash
awk ' BEGIN{OFS=" ";
RS="|";
FS=" ";
ORS=" "};
{
for (i=1; i<=NF ; i++)
{
if ($i == "-")
{
st=$(i-1);
en=$(i+1);
st++;
while (st < en)
{
print st;
st++;
}
}
else
print $i;
}
}' list.txt
如果字段是固定的,這更簡單直接:
$ awk '{for (i=$1+0;i<=$(NF-1);i++){printf "%d ", i};print ""}' list.txt
14 15 16 17 18 19
45 46 47 48 49 50
為了防止尾隨空間(感謝@fedorqui):
awk '{for (i=$1+0;i<$3+0;i++){printf "%d ", i};print ""$3}' list.txt
每個print
都被視為一個單獨的記錄,因此它在最后添加了ORS
。
你可以使用printf
istead:
#!/bin/bash
awk ' BEGIN{
RS="|";
FS=" ";};
{
for (i=1; i<=NF ; i++)
{
if ($i == "-")
{
st=$(i-1);
en=$(i+1);
st++;
while (st < en)
{
printf "%d ", st;
st++;
}
}
else
printf "%d " $i;
}
printf "\n"
}' list.txt
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.