Need advise/tip if there is more efficient way of doing this cut/paste/awk after changing a field
Hi,
This is the script currently and it is working as required. Just thought maybe there is a better or easier way of doing what I am trying to do.
Below is an excerpt of the file that I want to change. This is x.txt, the original file that I want to run this on is about 1000+ lines. Basically, these files are from several log files merged into one and I am wanting to change the USER=<username> field so that <username> is in lower case. I am working on the assumption that USERNAME=<username> is always field2.
Sample run of the script below:
I could simply do
but for 'clarity' I prefer to only change USER=<username> to USER=<lowercase_username> and leave the rest of the line as it is. I can't work out the awk or sed command options to use to achieve what I wanted, hence I ended up with a shell script instead. Maybe there is an awk one-liner that can do what I am trying to achieve
Hi,
Let's say that I have a file called table, I know that if I need to see a the second column for exampls I use:
awk ' {print $2}' table.txt
Is there anyway to use awk to actually cut a column and put it somewhere else in the table?:confused: (8 Replies)
Hi i need a favour
i have a file which has some trillions of records. The file is like this
11111000000000192831840914000000000000000000000000000
45789899090000000000000000011111111111111111111111111
I want to cut specific postions in each line like cut1-3 and assisgn it to a variable and... (5 Replies)
hi,
I have a file with content like this for an employee:
EmployeeID
101
Day_type, day
vacation,1/2/2009
sick day, 3/2/2009
personal day, 4/5/2009
jury duty day, 5/5/2009
how do I make the result to show:
EmployeeID,Day_type,day
101,vacation,1/2/2009
101,sick day,... (6 Replies)
Hello,
I had posted earlier about printing fields using AWK, but now I have a slightly different problem. I have text files in the format:
1*2,3,4,5
and wish to print the first, third, and fifth fields, including the asterisk and commas. In other words, after filtering it should look... (1 Reply)
Hi,
Need a help with shell script. I have to search for a string in one of the file, if match found, copy the line to a new file and delete the line from the exisiting file.
eg:
83510000000000063800000.1800000.1600000.1600000.2400000.1800000.2000000.21... (6 Replies)
Hi,
I've got a query regarding which of the following is more efficient & why -
cat <filename>|cut -d'*' -f2- > <newfilename>
or
cut -d'*' -f2- <filename> > <newfilename>
Thanks. (17 Replies)
I have a file which contains 3 fields separated by tabs example
andrew kid baker
I need to swap kid and baker using cut and paste commands how is this to be done?
Thanks (3 Replies)
i have file as with the below content
aaa.bbb.cc.dd
aaa.fff.bb
yyyyy.rrrrr.ggggg.iii
wwww.w.r.ty
i want the o/p as below
dd
bb
iii
ty
but i dont want to use awk. is there any other way to do this ? (5 Replies)
Discussion started by: anandgodse
5 Replies
LEARN ABOUT PHP
stream_filter_register
STREAM_FILTER_REGISTER(3) 1 STREAM_FILTER_REGISTER(3)stream_filter_register - Register a user defined stream filterSYNOPSIS
bool stream_filter_register (string $filtername, string $classname)
DESCRIPTION stream_filter_register(3) allows you to implement your own filter on any registered stream used with all the other filesystem functions
(such as fopen(3), fread(3) etc.).
PARAMETERS
o $filtername
- The filter name to be registered.
o $classname
- To implement a filter, you need to define a class as an extension of php_user_filter with a number of member functions. When
performing read/write operations on the stream to which your filter is attached, PHP will pass the data through your filter (and
any other filters attached to that stream) so that the data may be modified as desired. You must implement the methods exactly as
described in php_user_filter - doing otherwise will lead to undefined behaviour.
RETURN VALUES
Returns TRUE on success or FALSE on failure.
stream_filter_register(3) will return FALSE if the $filtername is already defined.
EXAMPLES
Example #1
Filter for capitalizing characters on foo-bar.txt stream
The example below implements a filter named strtoupper on the foo-bar.txt stream which will capitalize all letter characters writ-
ten to/read from that stream.
<?php
/* Define our filter class */
class strtoupper_filter extends php_user_filter {
function filter($in, $out, &$consumed, $closing)
{
while ($bucket = stream_bucket_make_writeable($in)) {
$bucket->data = strtoupper($bucket->data);
$consumed += $bucket->datalen;
stream_bucket_append($out, $bucket);
}
return PSFS_PASS_ON;
}
}
/* Register our filter with PHP */
stream_filter_register("strtoupper", "strtoupper_filter")
or die("Failed to register filter");
$fp = fopen("foo-bar.txt", "w");
/* Attach the registered filter to the stream just opened */
stream_filter_append($fp, "strtoupper");
fwrite($fp, "Line1
");
fwrite($fp, "Word - 2
");
fwrite($fp, "Easy As 123
");
fclose($fp);
/* Read the contents back out
*/
readfile("foo-bar.txt");
?>
The above example will output:
LINE1
WORD - 2
EASY AS 123
Example #2
Registering a generic filter class to match multiple filter names.
<?php
/* Define our filter class */
class string_filter extends php_user_filter {
var $mode;
function filter($in, $out, &$consumed, $closing)
{
while ($bucket = stream_bucket_make_writeable($in)) {
if ($this->mode == 1) {
$bucket->data = strtoupper($bucket->data);
} elseif ($this->mode == 0) {
$bucket->data = strtolower($bucket->data);
}
$consumed += $bucket->datalen;
stream_bucket_append($out, $bucket);
}
return PSFS_PASS_ON;
}
function onCreate()
{
if ($this->filtername == 'str.toupper') {
$this->mode = 1;
} elseif ($this->filtername == 'str.tolower') {
$this->mode = 0;
} else {
/* Some other str.* filter was asked for,
report failure so that PHP will keep looking */
return false;
}
return true;
}
}
/* Register our filter with PHP */
stream_filter_register("str.*", "string_filter")
or die("Failed to register filter");
$fp = fopen("foo-bar.txt", "w");
/* Attach the registered filter to the stream just opened
We could alternately bind to str.tolower here */
stream_filter_append($fp, "str.toupper");
fwrite($fp, "Line1
");
fwrite($fp, "Word - 2
");
fwrite($fp, "Easy As 123
");
fclose($fp);
/* Read the contents back out
*/
readfile("foo-bar.txt");
?>
The above example will output:
LINE1
WORD - 2
EASY AS 123
SEE ALSO stream_wrapper_register(3), stream_filter_append(3), stream_filter_prepend(3).
PHP Documentation Group STREAM_FILTER_REGISTER(3)