@OP You are using
, which means that the fields are single TAB characters and the fields are separated by anything else.
If I change -vFPAT='\t' to -vFS='\t' then I get: -vFS='\t' can be shortened to -F'\t', so it would become:
or
This User Gave Thanks to Scrutinizer For This Post:
...
i tried as per your comment and it is not working.
That's because you are using a regular expression for FS that works differently than you (probably) think it does.
This part:
matches "0 or more occurrences of a character other than comma".
So, let's say I have this as my data:
Then each one of "a", "b" and "c" matches "0 or more occurrences of a character other than comma".
Hence awk considers each one of "a", "b" and "c" as the delimiter and the rest (i.e. commas) as the data tokens.
So it sees this:
which explains the output below:
If you have tabs instead of commas, then the entire string is a "delimiter" and it is sandwiched between two "data" tokens that are both NULL, as seen below:
For the regular expression:
awk considers the bold brackets as the character class in the following:
Hence it processes both of the following as delimiters:
You can test this by running the following one-liner:
If you can explain what exactly you want as the delimiter, then maybe we can help you come up with a better regular expression.
Last edited by durden_tyler; 01-10-2019 at 07:59 PM..
These 2 Users Gave Thanks to durden_tyler For This Post:
I am just trying to output the below awk separated by tabs. Thank you :).
awk (added OFS as an attempt to itroduce tabs)
awk '{split($5,a,"-"); OFS='\t' print $1,$2,$3,a}' file.bed > test.bed
The awk runs and produces all the data in 1 field instead of 4 fields.
current output
... (2 Replies)
Hi All,
I have an awk command that uses the substr function - At the moment I know the length of the values so can use the example below i.e substr(i,0,1)
However in future these lengths may change so wondered if you can use a delimiter within a substr? Like in bash you could use cut -d ';',... (6 Replies)
I've a pipe delimited data in a file of size 3GB. if the text data conatins pipe delimiter that will be enclose with double quotes. I have to replace delimiter which exists between double quotes with #%@#%@#%@ using awk or sed. can some one provide a better and efficient solution to me.
The below... (4 Replies)
I have file like below
abc 12 34 45 code
abcdef 451 1 4 code
ghtyggg 4 56 3 code
I need to change this to
abc|12|34|45|code|
abcdef|451|1|4|code|
ghtyggg|4|56|3|code|
I tried replace space with | in sed ... but in the middle some row has... (7 Replies)
Hi Friends,
I have a file1.txt as below
29123973Ç2012-0529Ç35310124Ç000000000004762Ç00010Ç20Ç390ÇÇÇÇF
29123974Ç20120529Ç35310125Ç0000000000046770Ç00010Ç20Ç390ÇÇÇÇF
29123975Ç20120529Ç35310126Ç0000000000046804Ç00010Ç20Ç390ÇÇÇÇF
29123976Ç20120529Ç35310127Ç0000000000044820Ç00010Ç20Ç390ÇÇÇÇF
i have a file2.txt... (4 Replies)
Hi all,
Currently i am using
if( $0~/ NOT / && $0~/ NULL /)
{
.................
}
to check if the input record contains "NOT" and "NULL". But in some cases "NOT" and "NULL" are preceded and followed by tab. How do i find compare for these fields as well? (3 Replies)
I have a file containing about 5 million rows, in the file there are some records which has extra delimiter at random position. (we dont know the positions), now we have to Count the delimeter from each row and if the count of delimeter is not matching then I want to delete those rows from the... (5 Replies)
HI,
Need awk command to get date and time alone from
Input : "15:29:15 28.08.2010|SCHEDULE: Started program POSG1"
Output expected : "15:29:15 28.08.2010"
Please help. (9 Replies)
Dear All,
Good Day. I would like to hear your suggestions for the following problem:
I have a file with 5 columns with some numbers in 16 lines as shown below.
Input file:
Col 1 Col 2 Col 3 Col 4 Col 5
12 220 2 121 20
234 30 22 9... (3 Replies)
Wants to print line when there exist leading or trailing space or tab in fields 2,3 and 5
The below code prints all lines in file even if they dont have leading and trailing space or tab.
nawk -F"|" '{for(i=1;i<=NF;i++) {if ($i ~ "^*" || $i ~ "*$")}}1' file
file
Ouput required:
... (5 Replies)