Substr, regexp & clean-up

Hallo everyone,
I am loading a file with some extremely messed-up data that I am trying to 'unpick'. The basic method that I am using is the following where with (many such) if clauses, I look for some key text (here STNR:AT) and then extrapolate from there where the core information is.
In the example below I find the text and then take the 'AT' and the remainder of the string ...
if INSTR(p_POSTEXT, 'STNR:AT', 1) > 0 then
     RetVal := SUBSTR(p_POSTEXT, INSTR(p_POSTEXT, 'STNR:AT', 1) + 5);
end if;
This works fine but will be a lot of effort to program and so I am looking for short-cuts.
The first thing I am wondering is whether I can 'preserve' the value returned by the if-clause call and use this value in the processing (to get RelVal) without having to call INSTR a second time. I know how to do this is VBA but am not sure of the syntax in PL/SQL.
The second thing, I was thinking might help is the use of regular expression (regexp) processing but cannot see what advantage this would give me over SUBSTR and INSTR.
Anyway, if anyone has any help for me with this, then that would be a great help.
Regards and thanks,
Alan Searle

Hi Michael,
Many thanks for the tip and, yes, I took a deep look at 'REGEXP' and found a whole stack of features that I could use. In the end I came up with this code below which really simplified matters for me.
Regards and many thanks,
Alan.
CREATE OR REPLACE FUNCTION fnc_at_bearb(p_POSTEXT varchar) RETURN VARCHAR AS
PRAGMA AUTONOMOUS_TRANSACTION;
strATNR varchar2(255);
numStart number;
numEnd number;
strRetVal varchar2(255);
BEGIN
numStart := REGEXP_INSTR(p_POSTEXT, 'AT', 1, 1, 1);
if numStart = 0 Then
     numStart := REGEXP_INSTR(p_POSTEXT, 'STOERANF.NR.|STNR:AXT|STOENR|STOENR|STOERNR|STOEM|STNR|STBNR|STOE|SNR', 1, 1, 1);
end if;
if numStart > 0 then
     numEnd := REGEXP_INSTR(p_POSTEXT, '[[:digit:]]+', numStart, 1, 1);
     strATNR := TRIM(REGEXP_REPLACE(SUBSTR(p_POSTEXT, numStart, numEnd - numStart), '[[:punct:]]', Null));
     strRetVal := SUBSTR(SUBSTR('AT000000000000000', 1, 15 - LENGTH(strATNR)) || strATNR, 1, 15);
else
strRetVal := numStart;
end if;
RETURN strRetVal;
END;
/

Similar Messages

  • Looking for a substring within a string (regexp)

    Hi folks,
    I want to select a substring from a string
    string:
    21;0000;4145054;4;A;4 mit ALU XEOFX,117107,XEOFX YWY,1,YWY
    or
    21;0000;4145054;4;A;4 goldglamsnu XEOFX,198877,XEOFX YWY,1,YWY
    I'm looking for the substring:
    YWY,1,YWY
    and try this SQL statement
    SQL> select REGEXP_substr('21;0000;4145054;4;A;4 mit ALU XEOFX,117107,XEOFX YWY,1,YWY' ,',[^YWY]+[0-9]')
    2 from dual;
    REGEXP_
    ,117107
    I don't know where my mistake is. Can anybody please help me?
    Database Version 11G R2
    Thanks,
    ben
    Edited by: ben512 on May 14, 2013 5:05 PM

    Hi,
    ben512 wrote:
    Hi folks,
    I want to select a substring from a string
    string:
    21;0000;4145054;4;A;4 mit ALU XEOFX,117107,XEOFX YWY,1,YWY
    or
    21;0000;4145054;4;A;4 goldglamsnu XEOFX,198877,XEOFX YWY,1,YWY
    I'm looking for the substring:
    YWY,1,YWYWhy do you want that substring. Do you always want the last 9 characters of the string?
    If you're looking for a substring that starts with 'YWY', and then has any number (including 0) of commas, digits, and additional 'YWY' strings after it, then:
    REGEXP_SUBSTR ( str
               , 'YWY[,[:digit:]]*)
    I hope this answers your question.
    If not, post a little sample data (CREATE TABLE and INSERT statements, maybe 5 or 10 rows), and also post the results you want from that data. Include examples of any special cases you need to handle (e.g., the target pattern is not found at all, or it is found at 2 different places in the string).
    Explain, using specific examples, how you get those results from that data. Say what your business rules are.
    Always say which version of Oracle you're using (e.g., 11.2.0.2.0).
    See the forum FAQ {message:id=9360002}

  • Retrieving not full  result / regexp substr

    Hi ,
    when I try to run this code
    SQL> select
    2 regexp_substr('But , soft! What light through yonder window breaks?',
    3 'l[[:alpha:]] {4}') AS result
    4 from dual;
    I get just this ( R
    where the result should be like the full sub string which is ( light) not just R.
    Ml

    Mr.lonely wrote:
    Hi ,
    when I try to run this code
    SQL> select
    2 regexp_substr('But , soft! What light through yonder window breaks?',
    3 'l[[:alpha:]] {4}') AS resultThere's a space right before '{4}', so you're looking for a lower-case 'l', followed by any letter, followed by exactly 4 spaces.
    4 from dual;
    I get just this ( R
    where the result should be like the full sub string which is ( light) not just R. Actually, you're not even getting 'R' in the result set. (REGEXP_SUBSTR can't return anything that's not in the 1st argument, and there's no capital 'R' in that argument.) The "R" you see is the first character of the column header, RESULT. REGEXP_SUBSTR is returning NULL, because the pattern (ending in 4 spaces) wasn't found.
    MlLose the space:
    SELECT  REGEXP_SUBSTR ( 'But , soft! What light through yonder window breaks?'
                    , 'l[[:alpha:]]{4}'
                    )            AS result
    FROM    dual
    ;or, if you like having the space there, use the optional 5th argument to REGEXP_SUBSTR to ignore that space:
    SELECT  REGEXP_SUBSTR ( 'But , soft! What light through yonder window breaks?'
                    , 'l[[:alpha:]] {4}'
                    , 1
                    , 1
                    , 'x'     -- x means ignore whitespace in 2nd argument
                    )            AS result
    FROM    dual
    ;In order to pass the 5th argument in SQL, you have to pass the 3rd and 4th arguments, too.

  • Regexp substr to select the max number out an string

    Hi all,
    I need a solution for a query.
    I,ve a query to select the lowest number in a string.
    select regexp_substr('9 - 10','\d+')
    from dual;
    9
    So this is the query I need to select the min number in he string.
    but now I need it to give me the highest nr in the string .
    the output that I need =10
    Can someone help me pleasse?
    My regards

    Caroline wrote:
    select regexp_substr('9 - 10','\d+')
    from dual;
    9
    So this is the query I need to select the min number in he string.Actually it only gives you the first number in the string, not the minimum number.
    SQL> select regexp_substr('9 - 10','\d+')
      2  from dual;
    R
    9If your string is the other way around it will give you 10 instead of 9.
    SQL> ed
    Wrote file afiedt.buf
      1  select regexp_substr('10 - 9','\d+')
      2* from dual
    SQL> /
    RE
    10You probably want something like...
    SQL> ed
    Wrote file afiedt.buf
      1  with t as (select '9 - 10' as txt from dual)
      2  -- end of sample data
      3  select min(num) as min_num, max(num) as max_num
      4  from (
      5        select to_number(trim(REGEXP_SUBSTR (txt, '[^-]+', 1, level))) as num
      6        from t
      7        connect by level <= length(regexp_replace(txt,'[^-]*'))+1
      8*      )
    SQL> /
       MIN_NUM    MAX_NUM
             9         10
    SQL> ed
    Wrote file afiedt.buf
      1  with t as (select '10 - 9' as txt from dual)
      2  -- end of sample data
      3  select min(num) as min_num, max(num) as max_num
      4  from (
      5        select to_number(trim(REGEXP_SUBSTR (txt, '[^-]+', 1, level))) as num
      6        from t
      7        connect by level <= length(regexp_replace(txt,'[^-]*'))+1
      8*      )
    SQL> /
       MIN_NUM    MAX_NUM
             9         10
    SQL>

  • My macbook running Mavericks is slow.  I use it for recording and it is struggling. I am trying to avoid wiping my computer clean and reinstalling everything...

    Here is the etrecheck report.  Any suggestions of some other maintenance I can perform on my computer?  A mac tech did a system diagnostic and found nothing wrong with the hardware. I have already reinstalled Mavericks, so it seems like the next step is wiping the harddrive clean and starting over, but I want to avoid that if possible!  Can anybody help?
    EtreCheck version: 1.9.15 (52)
    Report generated September 2, 2014 at 6:11:15 PM CDT
    Hardware Information: ?
        MacBook Pro (13-inch, Mid 2012) (Verified)
        MacBook Pro - model: MacBookPro9,2
        1 2.5 GHz Intel Core i5 CPU: 2 cores
        8 GB RAM
    Video Information: ?
        Intel HD Graphics 4000 - VRAM: (null)
            Color LCD 1280 x 800
    System Software: ?
        OS X 10.9.4 (13E28) - Uptime: 0 days 0:28:34
    Disk Information: ?
        APPLE HDD TOSHIBA MK5065GSXF disk0 : (500.11 GB)
        S.M.A.R.T. Status: Verified
            EFI (disk0s1) <not mounted>: 209.7 MB
            Macintosh HD (disk0s2) / [Startup]: 499.25 GB (346.45 GB free)
            Recovery HD (disk0s3) <not mounted>: 650 MB
        HL-DT-ST DVDRW  GS31N 
    USB Information: ?
        Apple Computer, Inc. IR Receiver
        Apple Inc. Apple Internal Keyboard / Trackpad
        Apple Inc. BRCM20702 Hub
            Apple Inc. Bluetooth USB Host Controller
        Apple Inc. FaceTime HD Camera (Built-in)
    Thunderbolt Information: ?
        Apple Inc. thunderbolt_bus
    Gatekeeper: ?
        Mac App Store and identified developers
    Kernel Extensions: ?
        [not loaded]    com.focusrite.driver.usb2audio (1.7 - SDK 10.6) Support
        [not loaded]    com.paceap.kext.pacesupport.leopard (5.9 - SDK 10.4) Support
        [not loaded]    com.paceap.kext.pacesupport.master (5.9 - SDK 10.6) Support
        [not loaded]    com.paceap.kext.pacesupport.panther (5.9 - SDK 10.3) Support
        [loaded]    com.paceap.kext.pacesupport.snowleopard (5.9 - SDK 10.6) Support
        [not loaded]    com.paceap.kext.pacesupport.tiger (5.9 - SDK 10.4) Support
        [not loaded]    com.seagate.driver.PowSecDriverCore (5.2.3 - SDK 10.4) Support
        [not loaded]    com.seagate.driver.PowSecLeafDriver_10_4 (5.2.3 - SDK 10.4) Support
        [not loaded]    com.seagate.driver.PowSecLeafDriver_10_5 (5.2.3 - SDK 10.5) Support
        [not loaded]    com.seagate.driver.SeagateDriveIcons (5.2.3 - SDK 10.4) Support
        [loaded]    com.waves.driver.soundgrid (2.0.0) Support
    Launch Daemons: ?
        [loaded]    com.adobe.fpsaud.plist Support
        [loaded]    com.google.keystone.daemon.plist Support
        [running]    com.paceap.eden.licensed.plist Support
        [running]    com.waves.daemon.SoundGridProtocolService.plist Support
        [loaded]    PACESupport.plist Support
    Launch Agents: ?
        [loaded]    com.google.keystone.agent.plist Support
    User Launch Agents: ?
        [running]    com.spotify.webhelper.plist Support
    User Login Items: ?
        iTunesHelper
    Internet Plug-ins: ?
        FlashPlayer-10.6: Version: 14.0.0.176 - SDK 10.6 Support
        QuickTime Plugin: Version: 7.7.3
        Flash Player: Version: 14.0.0.176 - SDK 10.6 Support
        Default Browser: Version: 537 - SDK 10.9
        o1dbrowserplugin: Version: 5.4.2.18903 Support
        googletalkbrowserplugin: Version: 5.4.2.18903 Support
        Silverlight: Version: 5.1.30514.0 - SDK 10.6 Support
    Safari Extensions: ?
        wrc
        Searchme
        Amazon Shopping Assistant
        Ebay Shopping Assistant
        SlickSavings
    Audio Plug-ins: ?
        BluetoothAudioPlugIn: Version: 1.0 - SDK 10.9
        AirPlay: Version: 2.0 - SDK 10.9
        AppleAVBAudio: Version: 203.2 - SDK 10.9
        iSightAudio: Version: 7.7.3 - SDK 10.9
    iTunes Plug-ins: ?
        Quartz Composer Visualizer: Version: 1.4 - SDK 10.9
    3rd Party Preference Panes: ?
        Flash Player  Support
        Tuxera NTFS  Support
    Time Machine: ?
        Auto backup: YES
        Volumes being backed up:
            Macintosh HD: Disk size: 464.96 GB Disk used: 142.30 GB
        Destinations:
            TOURO Mobile 3.0 [Local] (Last used)
            Total size: 931.19 GB
            Total number of backups: 2
            Oldest backup: 2014-08-04 21:26:13 +0000
            Last backup: 2014-08-14 23:31:16 +0000
            Size of backup disk: Adequate
                Backup size 931.19 GB > (Disk used 142.30 GB X 3)
        Time Machine details may not be accurate.
        All volumes being backed up may not be listed.
    Top Processes by CPU: ?
             4%    SGProtocolService
             2%    firefox
             1%    fontd
             0%    WindowServer
             0%    imagent
    Top Processes by Memory: ?
        270 MB    firefox
        106 MB    com.apple.IconServicesAgent
        66 MB    Finder
        41 MB    mds_stores
        33 MB    mds
    Virtual Memory Information: ?
        5.92 GB    Free RAM
        1.02 GB    Active RAM
        369 MB    Inactive RAM
        712 MB    Wired RAM
        282 MB    Page-ins
        0 B    Page-outs

    1. This procedure is a diagnostic test. It changes nothing, for better or worse, and therefore will not, in itself, solve the problem. But with the aid of the test results, the solution may take a few minutes, instead of hours or days.
    Don't be put off merely by the seeming complexity of these instructions. The process is much less complicated than the description. You do harder tasks with the computer all the time.
    2. If you don't already have a current backup, back up all data before doing anything else. The backup is necessary on general principle, not because of anything in the test procedure. Backup is always a must, and when you're having any kind of trouble with the computer, you may be at higher than usual risk of losing data, whether you follow these instructions or not.
    There are ways to back up a computer that isn't fully functional. Ask if you need guidance.
    3. Below are instructions to run a UNIX shell script, a type of program. As I wrote above, it changes nothing. It doesn't send or receive any data on the network. All it does is to generate a human-readable report on the state of the computer. That report goes nowhere unless you choose to share it. If you prefer, you can read it yourself without disclosing the contents to me or anyone else.
    You should be wondering whether you can believe me, and whether it's safe to run a program at the behest of a stranger. In general, no, it's not safe and I don't encourage it.
    In this case, however, there are a couple of ways for you to decide whether the program is safe without having to trust me. First, you can read it. Unlike an application that you download and click to run, it's transparent, so anyone with the necessary skill can verify what it does.
    You may not be able to understand the script yourself. But variations of the script have been posted on this website thousands of times over a period of years. The site is hosted by Apple, which does not allow it to be used to distribute harmful software. Any one of the millions of registered users could have read the script and raised the alarm if it was harmful. Then I would not be here now and you would not be reading this message.
    Nevertheless, if you can't satisfy yourself that these instructions are safe, don't follow them. Ask for other options.
    4. Here's a summary of what you need to do, if you choose to proceed:
    ☞ Copy a line of text in this window to the Clipboard.
    ☞ Paste into the window of another application.
    ☞ Wait for the test to run. It usually takes a few minutes.
    ☞ Paste the results, which will have been copied automatically, back into a reply on this page.
    The sequence is: copy, paste, wait, paste again. You don't need to copy a second time. Details follow.
    5. You may have started the computer in "safe" mode. Preferably, these steps should be taken in “normal” mode, under the conditions in which the problem is reproduced. If the system is now in safe mode and works well enough in normal mode to run the test, restart as usual. If you can only test in safe mode, do that.
    6. If you have more than one user, and the one affected by the problem is not an administrator, then please run the test twice: once while logged in as the affected user, and once as an administrator. The results may be different. The user that is created automatically on a new computer when you start it for the first time is an administrator. If you can't log in as an administrator, test as the affected user. Most personal Macs have only one user, and in that case this section doesn’t apply. Don't log in as root.
    7. The script is a single long line, all of which must be selected. You can accomplish this easily by triple-clicking anywhere in the line. The whole line will highlight, though you may not see all of it in the browser window, and you can then copy it. If you try to select the line by dragging across the part you can see, you won't get all of it.
    Triple-click anywhere in the line of text below on this page to select it:
    PATH=/usr/bin:/bin:/usr/sbin:/sbin:/usr/libexec;clear;cd;p=(Software Hardware Memory Diagnostics Power FireWire Thunderbolt USB Fonts SerialATA 4 1000 25 5120 KiB/s 1024 85 \\b%% 20480 1 MB/s 25000 ports ' com.clark.\* \*dropbox \*GoogleDr\* \*k.AutoCAD\* \*k.Maya\* vidinst\* ' DYLD_INSERT_LIBRARIES\ DYLD_LIBRARY_PATH -86 "` route -n get default|awk '/e:/{print $2}' `" 25 N\\/A down up 102400 25600 recvfrom sendto CFBundleIdentifier 25 25 25 1000 MB com.apple.AirPortBaseStationAgent 464843899 51 5120 files );N5=${#p[@]};p[N5]=` networksetup -listnetworkserviceorder|awk ' NR>1 { sub(/^\([0-9]+\) /,"");n=$0;getline;} $NF=="'${p[26]}')" { sub(/.$/,"",$NF);print n;exit;} ' `;f=('\n%s: %s\n' '\n%s\n\n%s\n' '\nRAM details\n%s\n' %s\ %s '%s\n-\t%s\n' );S0() { echo ' { q=$NF+0;$NF="";u=$(NF-1);$(NF-1)="";gsub(/^ +| +$/,"");if(q>='${p[$1]}') printf("%s (UID %s) is using %s '${p[$2]}'",$0,u,q);} ';};s=(' /^ *$|CSConfigDot/d;s/^ */   /;s/[-0-9A-Fa-f]{22,}/UUID/g;s/(ochat)\.[^.]+(\..+)/\1\2/;/Shared/!s/\/Users\/[^/]+/~/g ' ' s/^ +//;/de: S|[nst]:/p;' ' {sub(/^ +/,"")};/er:/;/y:/&&$2<'${p[10]} ' 1s/://;3,6d;/[my].+:/d;s/^ {4}//;H;${ g;s/\n$//;/s: [^EO]|x([^08]|02[^F]|8[^0])/p;} ' ' 5h;6{ H;g;/P/!p;} ' ' ($1~/^Cy/&&$3>'${p[11]}')||($1~/^Cond/&&$2!~/^N/) ' ' /:$/{ N;/:.+:/d;s/ *://;b0'$'\n'' };/^ *(V.+ [0N]|Man).+ /{ s/ 0x.... //;s/[()]//g;s/(.+: )(.+)/ (\2)/;H;};$b0'$'\n'' d;:0'$'\n'' x;s/\n\n//;/Apple[ ,]|Genesy|Intel|SMSC/d;s/\n.*//;/\)$/p;' ' s/^.*C/C/;H;${ g;/No th|pms/!p;} ' '/= [^GO]/p' '{$1=""};1' ' /Of/!{ s/^.+is |\.//g;p;} ' ' $0&&!/ / { n++;print;} END { if(n<200) print "com.apple.";} ' ' $3~/[0-9]:[0-9]{2}$/ { gsub(/:[0-9:a-f]{14}/,"");} { print|"tail -n'${p[12]}'";} ' ' NR==2&&$4<='${p[13]}' { print $4;} ' ' END { $2/=256;if($2>='${p[15]}') print int($2) } ' ' NR!=13{next};{sub(/[+-]$/,"",$NF)};'"`S0 21 22`" 'NR!=2{next}'"`S0 37 17`" ' NR!=5||$8!~/[RW]/{next};{ $(NF-1)=$1;$NF=int($NF/10000000);for(i=1;i<=3;i++){$i="";$(NF-1-i)="";};};'"`S0 19 20`" 's:^:/:p' '/\.kext\/(Contents\/)?Info\.plist$/p' 's/^.{52}(.+) <.+/\1/p' ' /Launch[AD].+\.plist$/ { n++;print;} END { print "'${p[41]}'";if(n<200) print "/System/";} ' '/\.xpc\/(Contents\/)?Info\.plist$/p' ' NR>1&&!/0x|\.[0-9]+$|com\.apple\.launchctl\.(Aqua|Background|System)$|'${p[41]}'/ { print $3;} ' ' /\.(framew|lproj)|\):/d;/plist:|:.+(Mach|scrip)/s/:[^:]+//p ' '/^root$/p' ' !/\/Contents\/.+\/Contents|Applic|Autom|Frameworks/&&/Lib.+\/Info.plist$/ { n++;print;} END { if(n<1100) print "/System/";} ' '/^\/usr\/lib\/.+dylib$/p' ' /Temp|emac/{next};/(etc|Preferences|Launch[AD].+)\// { sub(".(/private)?","");n++;print;} END { print "'${p[41]}'.plist\t'${p[42]}'";if(n<500) print "Launch";} ' ' /\/(Contents\/.+\/Contents|Frameworks)\/|\.wdgt\/.+\.([bw]|plu)/d;p;' 's/\/(Contents\/)?Info.plist$//;p' ' { gsub("^| |\n","\\|\\|kMDItem'${p[35]}'=");sub("^...."," ") };1 ' p '{print $3"\t"$1}' 's/\'$'\t''.+//p' 's/1/On/p' '/Prox.+: [^0]/p' '$2>'${p[43]}'{$2=$2-1;print}' ' BEGIN { i="'${p[26]}'";M1='${p[16]}';M2='${p[18]}';M3='${p[31]}';M4='${p[32]}';} !/^A/{next};/%/ { getline;if($5<M1) a="user "$2"%, system "$4"%";} /disk0/&&$4>M2 { b=$3" ops/s, "$4" blocks/s";} $2==i { if(c) { d=$3+$4+$5+$6;next;};if($4>M3||$6>M4) c=int($4/1024)" in, "int($6/1024)" out";} END { if(a) print "CPU: "a;if(b) print "I/O: "b;if(c) print "Net: "c" (KiB/s)";if(d) print "Net errors: "d" packets/s";} ' ' /r\[0\] /&&$NF!~/^1(0|72\.(1[6-9]|2[0-9]|3[0-1])|92\.168)\./ { print $NF;exit;} ' ' !/^T/ { printf "(static)";exit;} ' '/apsd|BKAg|OpenD/!s/:.+//p' ' (/k:/&&$3!~/(255\.){3}0/ )||(/v6:/&&$2!~/A/ ) ' ' $1~"lR"&&$2<='${p[25]}';$1~"li"&&$3!~"wpa2";' ' BEGIN { FS=":";p="uniq -c|sed -E '"'s/ +\\([0-9]+\\)\\(.+\\)/\\\2 x\\\1/;s/x1$//'"'";} { n=split($3,a,".");sub(/_2[01].+/,"",$3);print $2" "$3" "a[n]$1|p;b=b$1;} END { close(p) if(b) print("\n\t* Code injection");} ' ' NR!=4{next} {$NF/=10240} '"`S0 27 14`" ' END { if($3~/[0-9]/)print$3;} ' ' BEGIN { L='${p[36]}';} !/^[[:space:]]*(#.*)?$/ { l++;if(l<=L) f=f"\n   "$0;} END { F=FILENAME;if(!F) exit;if(!f) f="\n   [N/A]";"file -b "F|getline T;if(T!~/^(AS.+ (En.+ )?text$|(Bo|PO).+ sh.+ text ex)/) F=F" ("T")";printf("\nContents of %s\n%s\n",F,f);if(l>L) printf("\n   ...and %s more line(s)\n",l-L);} ' ' /^ +[NP].+ =/h;/^( +D.+[{]|[}])/{ g;s/.+= //p;};' 's/0/Off/p' ' END{print NR} ' ' /id: N|te: Y/{i++} END{print i} ' ' / / { print "'"${p[28]}"'";exit;};1;' '/ en/!s/\.//p' ' NR!=13{next};{sub(/[+-M]$/,"",$NF)};'"`S0 39 40`" ' $10~/\(L/&&$9!~"localhost" { sub(/.+:/,"",$9);print $1": "$9;} ' '/^ +r/s/.+"(.+)".+/\1/p' 's/(.+\.wdgt)\/(Contents\/)?Info\.plist$/\1/p' 's/^.+\/(.+)\.wdgt$/\1/p' ' /l: /{ /DVD/d;s/.+: //;b0'$'\n'' };/s: /{ /V/d;s/^ */- /;H;};$b0'$'\n'' d;:0'$'\n'' x;/APPLE [^:]+$/d;p;' ' /^find: /d;p;' "`S0 44 45`" );c1=(system_profiler pmset\ -g nvram fdesetup find syslog df vm_stat sar ps sudo\ crontab sudo\ iotop top pkgutil 'PlistBuddy 2>&1 -c "Print' whoami cksum kextstat launchctl sudo\ launchctl crontab 'sudo defaults read' stat lsbom mdfind ' for i in ${p[24]};do ${c1[18]} ${c2[27]} $i;done;' defaults\ read scutil sudo\ dtrace sudo\ profiles sed\ -En awk /S*/*/P*/*/*/C*/*/airport networksetup mdutil sudo\ lsof test );c2=(com.apple.loginwindow\ LoginHook '" /L*/P*/loginw*' '" L*/P*/*loginit*' 'L*/Ca*/com.ap*.Saf*/E*/* -d 1 -name In*t -exec '"${c1[14]}"' :CFBundleDisplayName" {} \;|sort|uniq' '~ $TMPDIR.. \( -flags +sappnd,schg,uappnd,uchg -o ! -user $UID -o ! -perm -600 \)' '.??* -path .Trash -prune -o -type d -name *.app -print -prune' :${p[35]}\" :Label\" '{/,}L*/{Con,Pref}* -type f ! -size 0 -name *.plist -exec plutil -s {} \;' "-f'%N: %l' Desktop L*/Keyc*" therm sysload boot-args status " -F '\$Time \$Message' -k Sender kernel -k Message Req 'bad |Beac|caug|dead[^bl]|FAIL|fail|GPU |hfs: Ru|inval|jnl:|last value [1-9]|n Cause: -|NVDA\(|pagin|proc: t|Roamed|rror|ssert|Thrott|tim(ed? ?|ing )o|WARN' -k Message Rne 'Goog|ksadm|SMC:| VALI|xpma' -o -k Sender fseventsd -k Message Req 'SL' " '-du -n DEV -n EDEV 1 10' 'acrx -o comm,ruid,%cpu' '-t1 10 1' '-f -pfc /var/db/r*/com.apple.*.{BS,Bas,Es,J,OSXU,Rem,up}*.bom' '{/,}L*/Lo*/Diag* -type f -regex .\*[cgh] ! -name *ag \( -exec grep -lq "^Thread c" {} \; -exec printf \* \; -o -true \) -execdir stat -f:%Sc:%N -t%F {} \;|sort -t: -k2 |tail -n'${p[38]} '-L {/{S*/,},}L*/Lau* -type f' '-L /{S*/,}L*/StartupItems -type f -exec file {} +' '-L /S*/L*/{C*/Sec*A,E}* {/,}L*/{A*d,Ca*/*/Ex,Co{mpon,reM},Ex,Inter,iTu*/*P,Keyb,Mail/B,Pr*P,Qu*T,Scripti,Sec,Servi,Spo,Widg}* -path \\*s/Resources -prune -o -type f -name Info.plist' '/usr/lib -type f -name *.dylib' `awk "${s[31]}"<<<${p[23]}` "/e*/{auto,{cron,fs}tab,hosts,{[lp],sy}*.conf,pam.d/*,ssh{,d}_config,*.local} {,/usr/local}/etc/periodic/*/* /L*/P*{,/*}/com.a*.{Bo,sec*.ap}*t /S*/L*/Lau*/*t .launchd.conf" list getenv /Library/Preferences/com.apple.alf\ globalstate --proxy '-n get default' -I --dns -getdnsservers\ "${p[N5]}" -getinfo\ "${p[N5]}" -P -m\ / '' -n1 '-R -l1 -n1 -o prt -stats command,uid,prt' '--regexp --only-files --files com.apple.pkg.*|sort|uniq' -kl -l -s\ / '-R -l1 -n1 -o mem -stats command,uid,mem' '+c0 -i4TCP:0-1023' com.apple.dashboard\ layer-gadgets '-d /L*/Mana*/$USER&&echo On' '-app Safari WebKitDNSPrefetchingEnabled' "+c0 -l|awk '{print(\$1,\$3)}'|sort|uniq -c|sort -n|tail -1|awk '{print(\$2,\$3,\$1)}'" );N1=${#c2[@]};for j in {0..9};do c2[N1+j]=SP${p[j]}DataType;done;N2=${#c2[@]};for j in 0 1;do c2[N2+j]="-n ' syscall::'${p[33+j]}':return { @out[execname,uid]=sum(arg0) } tick-10sec { trunc(@out,1);exit(0);} '";done;l=(Restricted\ files Hidden\ apps 'Elapsed time (s)' POST Battery Safari\ extensions Bad\ plists 'High file counts' User Heat System\ load boot\ args FileVault Diagnostic\ reports Log 'Free space (MiB)' 'Swap (MiB)' Activity 'CPU per process' Login\ hook 'I/O per process' Mach\ ports kexts Daemons Agents launchd Startup\ items Admin\ access Root\ access Bundles dylibs Apps Font\ issues Inserted\ dylibs Firewall Proxies DNS TCP/IP Wi-Fi Profiles Root\ crontab User\ crontab 'Global login items' 'User login items' Spotlight Memory Listeners Widgets Parental\ Controls Prefetching SATA Descriptors );N3=${#l[@]};for i in 0 1 2;do l[N3+i]=${p[5+i]};done;N4=${#l[@]};for j in 0 1;do l[N4+j]="Current ${p[29+j]}stream data";done;A0() { id -G|grep -qw 80;v[1]=$?;((v[1]==0))&&sudo true;v[2]=$?;v[3]=`date +%s`;clear >&-;date '+Start time: %T %D%n';};for i in 0 1;do eval ' A'$((1+i))'() { v=` eval "${c1[$1]} ${c2[$2]}"|'${c1[30+i]}' "${s[$3]}" `;[[ "$v" ]];};A'$((3+i))'() { v=` while read i;do [[ "$i" ]]&&eval "${c1[$1]} ${c2[$2]}" \"$i\"|'${c1[30+i]}' "${s[$3]}";done<<<"${v[$4]}" `;[[ "$v" ]];};A'$((5+i))'() { v=` while read i;do '${c1[30+i]}' "${s[$1]}" "$i";done<<<"${v[$2]}" `;[[ "$v" ]];};';done;A7(){ v=$((`date +%s`-v[3]));};B2(){ v[$1]="$v";};for i in 0 1;do eval ' B'$i'() { v=;((v['$((i+1))']==0))||{ v=No;false;};};B'$((3+i))'() { v[$2]=`'${c1[30+i]}' "${s[$3]}"<<<"${v[$1]}"`;} ';done;B5(){ v[$1]="${v[$1]}"$'\n'"${v[$2]}";};B6() { v=` paste -d: <(printf "${v[$1]}") <(printf "${v[$2]}")|awk -F: ' {printf("'"${f[$3]}"'",$1,$2)} ' `;};B7(){ v=`grep -Fv "${v[$1]}"<<<"$v"`;};C0(){ [[ "$v" ]]&&echo "$v";};C1() { [[ "$v" ]]&&printf "${f[$1]}" "${l[$2]}" "$v";};C2() { v=`echo $v`;[[ "$v" != 0 ]]&&C1 0 $1;};C3() { v=`sed -E "$s"<<<"$v"`&&C1 1 $1;};for i in 1 2;do for j in 0 2 3;do eval D$i$j'(){ A'$i' $1 $2 $3; C'$j' $4;};';done;done;{ A0;D20 0 $((N1+1)) 2;D10 0 $N1 1;B0;C2 27;B0&&! B1&&C2 28;D12 15 37 25 8;A1 0 $((N1+2)) 3;C0;D13 0 $((N1+3)) 4 3;D23 0 $((N1+4)) 5 4;D13 0 $((N1+9)) 59 50;for i in 0 1 2;do D13 0 $((N1+5+i)) 6 $((N3+i));done;D13 1 10 7 9;D13 1 11 8 10;D22 2 12 9 11;D12 3 13 10 12;D23 4 19 44 13;D23 5 14 12 14;D22 6 36 13 15;D22 7 37 14 16;D23 8 15 38 17;D22 9 16 16 18;B1&&{ D22 35 49 61 51;D22 11 17 17 20;for i in 0 1;do D22 28 $((N2+i)) 45 $((N4+i));done;};D22 12 44 54 45;D22 12 39 15 21;A1 13 40 18;B2 4;B3 4 0 19;A3 14 6 32 0;B4 0 5 11;A1 17 41 20;B7 5;C3 22;B4 4 6 21;A3 14 7 32 6;B4 0 7 11;B3 4 0 22;A3 14 6 32 0;B4 0 8 11;B5 7 8;B1&&{ A2 19 26 23;B7 7;C3 23;};A2 18 26 23;B7 7;C3 24;A2 4 20 21;B7 6;B2 9;A4 14 7 52 9;B2 10;B6 9 10 4;C3 25;D13 4 21 24 26;B4 4 12 26;B3 4 13 27;A1 4 22 29;B7 12;B2 14;A4 14 6 52 14;B2 15;B6 14 15 4;B3 0 0 30;C3 29;A1 4 23 27;B7 13;C3 30;D13 24 24 32 31;D13 25 37 32 33;A2 23 18 28;B2 16;A2 16 25 33;B7 16;B3 0 0 34;B2 21;A6 47 21&&C0;B1&&{ D13 21 0 32 19;D13 10 42 32 40;D22 29 35 46 39;};D13 14 1 48 42;D12 34 43 53 44;D22 0 $((N1+8)) 51 32;D13 4 8 41 6;D12 26 28 35 34;D13 27 29 36 35;A2 27 32 39&&{ B2 19;A2 33 33 40;B2 20;B6 19 20 3;};C2 36;D23 33 34 42 37;B1&&D23 35 45 55 46;D23 32 31 43 38;D12 36 47 32 48;D13 20 42 32 41;D13 14 2 48 43;D13 4 5 32 1;D13 4 3 60 5;D12 26 48 49 49;B3 4 22 57;A1 26 46 56;B7 22;B3 0 0 58;C3 47;D22 4 4 50 0;D23 22 9 37 7;A7;C2 2;} 2>/dev/null|pbcopy;exit 2>&-
    Copy the selected text to the Clipboard by pressing the key combination command-C.
    8. Launch the built-in Terminal application in any of the following ways:
    ☞ Enter the first few letters of its name into a Spotlight search. Select it in the results (it should be at the top.)
    ☞ In the Finder, select Go ▹ Utilities from the menu bar, or press the key combination shift-command-U. The application is in the folder that opens.
    ☞ Open LaunchPad. Click Utilities, then Terminal in the icon grid.
    Click anywhere in the Terminal window and paste by pressing command-V. The text you pasted should vanish immediately. If it doesn't, press the return key.
    9. If you see an error message in the Terminal window such as "Syntax error" or "Event not found," enter
    exec bash
    and press return. Then paste the script again.
    10. If you're logged in as an administrator, you'll be prompted for your login password. Nothing will be displayed when you type it. You will not see the usual dots in place of typed characters. Make sure caps lock is off. Type carefully and then press return. You may get a one-time warning to be careful. If you make three failed attempts to enter the password, the test will run anyway, but it will produce less information. In most cases, the difference is not important. If you don't know the password, or if you prefer not to enter it, press the key combination control-C or just press return  three times at the password prompt. Again, the script will still run.
    If you're not logged in as an administrator, you won't be prompted for a password. The test will still run. It just won't do anything that requires administrator privileges.
    11. The test may take a few minutes to run, depending on how many files you have and the speed of the computer. A computer that's abnormally slow may take longer to run the test. While it's running, there will be nothing in the Terminal window and no indication of progress. Wait for the line
    [Process completed]
    to appear. If you don't see it within half an hour or so, the test probably won't complete in a reasonable time. In that case, close the Terminal window and report what happened. No harm will be done.
    12. When the test is complete, quit Terminal. The results will have been copied to the Clipboard automatically. They are not shown in the Terminal window. Please don't copy anything from there. All you have to do is start a reply to this comment and then paste by pressing command-V again.
    At the top of the results, there will be a line that begins with the words "Start time." If you don't see that, but instead see a mass of gibberish, you didn't wait for the "Process completed" message to appear in the Terminal window. Please wait for it and try again.
    If any private information, such as your name or email address, appears in the results, anonymize it before posting. Usually that won't be necessary.
    13. When you post the results, you might see an error message on the web page: "You have included content in your post that is not permitted," or "You are not authorized to post." That's a bug in the forum software. Please post the test results on Pastebin, then post a link here to the page you created.
    14. This is a public forum, and others may give you advice based on the results of the test. They speak only for themselves, and I don't necessarily agree with them.
    Copyright © 2014 by Linc Davis. As the sole author of this work, I reserve all rights to it except as provided in the Use Agreement for the Apple Support Communities website ("ASC"). Readers of ASC may copy it for their own personal use. Neither the whole nor any part may be redistributed.

  • MBP 2012 still slow after clean install of Yosemite

    Hello,
    I'm hoping someone can help me, I've done just about everything I can find online to get my MBP to work like it used to. After unsuccessful attempts at different workarounds, I decided to wipe everything perform a clean install of Yosemite.
    Still no luck!! #nobueno
    Problem description:
    After clean install of Yosemite, my MacBook Pro (2012) continues to run at a snailspace. Very slow!
    EtreCheck version: 2.1.8 (121)
    Report generated February 18, 2015 at 11:51:42 AM PST
    Download EtreCheck from http://etresoft.com/etrecheck
    Click the [Click for support] links for help with non-Apple products.
    Click the [Click for details] links for more information about that line.
    Hardware Information: ℹ️
        MacBook Pro (13-inch, Mid 2012) (Technical Specifications)
        MacBook Pro - model: MacBookPro9,2
        1 2.9 GHz Intel Core i7 CPU: 2-core
        8 GB RAM Upgradeable
            BANK 0/DIMM0
                4 GB DDR3 1600 MHz ok
            BANK 1/DIMM0
                4 GB DDR3 1600 MHz ok
        Bluetooth: Good - Handoff/Airdrop2 supported
        Wireless:  en1: 802.11 a/b/g/n
        Battery Health: Normal - Cycle count 294
    Video Information: ℹ️
        Intel HD Graphics 4000
            Color LCD 1280 x 800
    System Software: ℹ️
        OS X 10.10.2 (14C109) - Time since boot: 1:41:54
    Disk Information: ℹ️
        TOSHIBA MK7559GSXF disk0 : (750.16 GB)
            EFI (disk0s1) <not mounted> : 210 MB
            Recovery HD (disk0s3) <not mounted>  [Recovery]: 650 MB
            Macintosh HD (disk1) / : 748.93 GB (735.33 GB free)
                Core Storage: disk0s2 749.30 GB Online
        MATSHITADVD-R   UJ-8A8 
    USB Information: ℹ️
        Apple Inc. FaceTime HD Camera (Built-in)
        Apple Inc. Apple Internal Keyboard / Trackpad
        Apple Computer, Inc. IR Receiver
        Apple Inc. BRCM20702 Hub
            Apple Inc. Bluetooth USB Host Controller
    Thunderbolt Information: ℹ️
        Apple Inc. thunderbolt_bus
    Gatekeeper: ℹ️
        Mac App Store and identified developers
    User Login Items: ℹ️
        None
    Internet Plug-ins: ℹ️
        Default Browser: Version: 600 - SDK 10.10
        QuickTime Plugin: Version: 7.7.3
    3rd Party Preference Panes: ℹ️
        None
    Time Machine: ℹ️
        Time Machine not configured!
    Top Processes by CPU: ℹ️
             4%    WindowServer
             1%    Finder
             1%    mds
             1%    mds_stores
             0%    deleted
    Top Processes by Memory: ℹ️
        163 MB    mds_stores
        86 MB    com.apple.WebKit.WebContent
        77 MB    Finder
        69 MB    WindowServer
        52 MB    mds
    Virtual Memory Information: ℹ️
        4.90 GB    Free RAM
        1.86 GB    Active RAM
        868 MB    Inactive RAM
        954 MB    Wired RAM
        2.28 GB    Page-ins
        0 B    Page-outs
    Diagnostics Information: ℹ️
        Feb 18, 2015, 10:03:37 AM    Self test - passed
        Feb 18, 2015, 09:55:07 AM    /Library/Logs/DiagnosticReports/mbpluginhost_2015-02-18-095507_[redacted].crash

    1. This procedure is a diagnostic test. It changes nothing, for better or worse, and therefore will not, in itself, solve the problem. But with the aid of the test results, the solution may take a few minutes, instead of hours or days.
    The test works on OS X 10.7 ("Lion") and later. I don't recommend running it on older versions of OS X. It will do no harm, but it won't do much good either.
    Don't be put off by the complexity of these instructions. The process is much less complicated than the description. You do harder tasks with the computer all the time.
    2. If you don't already have a current backup, back up all data before doing anything else. The backup is necessary on general principle, not because of anything in the test procedure. Backup is always a must, and when you're having any kind of trouble with the computer, you may be at higher than usual risk of losing data, whether you follow these instructions or not.
    There are ways to back up a computer that isn't fully functional. Ask if you need guidance.
    3. Below are instructions to run a UNIX shell script, a type of program. As I wrote above, it changes nothing. It doesn't send or receive any data on the network. All it does is to generate a human-readable report on the state of the computer. That report goes nowhere unless you choose to share it. If you prefer, you can act on it yourself without disclosing the contents to me or anyone else.
    You should be wondering whether you can believe me, and whether it's safe to run a program at the behest of a stranger. In general, no, it's not safe and I don't encourage it.
    In this case, however, there are a couple of ways for you to decide whether the program is safe without having to trust me. First, you can read it. Unlike an application that you download and click to run, it's transparent, so anyone with the necessary skill can verify what it does.
    You may not be able to understand the script yourself. But variations of it have been posted on this website thousands of times over a period of years. The site is hosted by Apple, which does not allow it to be used to distribute harmful software. Any one of the millions of registered users could have read the script and raised the alarm if it was harmful. Then I would not be here now and you would not be reading this message. See, for example, this discussion.
    Nevertheless, if you can't satisfy yourself that these instructions are safe, don't follow them. Ask for other options.
    4. Here's a summary of what you need to do, if you choose to proceed:
    ☞ Copy a line of text in this window to the Clipboard.
    ☞ Paste into the window of another application.
    ☞ Wait for the test to run. It usually takes a few minutes.
    ☞ Paste the results, which will have been copied automatically, back into a reply on this page.
    The sequence is: copy, paste, wait, paste again. You don't need to copy a second time. Details follow.
    5. Try to test under conditions that reproduce the problem, as far as possible. For example, if the computer is sometimes, but not always, slow, run the test during a slowdown.
    You may have started up in "safe" mode. If the system is now in safe mode and works well enough in normal mode to run the test, restart as usual. If you can only test in safe mode, do that.
    6. If you have more than one user, and the one affected by the problem is not an administrator, then please run the test twice: once while logged in as the affected user, and once as an administrator. The results may be different. The user that is created automatically on a new computer when you start it for the first time is an administrator. If you can't log in as an administrator, test as the affected user. Most personal Macs have only one user, and in that case this section doesn’t apply. Don't log in as root.
    7. The script is a single long line, all of which must be selected. You can accomplish this easily by triple-clicking anywhere in the line. The whole line will highlight, though you may not see all of it in the browser window, and you can then copy it. If you try to select the line by dragging across the part you can see, you won't get all of it.
    Triple-click anywhere in the line of text below on this page to select it:
    PATH=/usr/bin:/bin:/usr/sbin:/sbin:/usr/libexec;clear;cd;p=(1248 ' 0.5 0.25 10 1000 15 5120 1000 25000 1 1 0 100 ' 51 25600 4 10 25 5120 102400 1000 25 1000 150 40 500 300 85 25 20480 262144 20 2000 524288 604800 5 );k=({Soft,Hard}ware Memory Diagnostics Power FireWire Thunderbolt USB Bluetooth SerialATA Extensions Applications Frameworks PrefPane Fonts Displays PCI UniversalAccess InstallHistory ConfigurationProfile AirPort 'com\.apple\.' -\\t N\\/A 'AES|atr|udit|msa|dnse|ax|ensh|fami|FileS|fing|ft[pw]|gedC|kdu|etS|is\.|alk|ODSA|otp|htt|pcas|ps-lp|rexe|rlo|rsh|smb|snm|teln|upd-[aw]|uuc|vix|webf' OSBundle{Require,AllowUserLoa}d 'Mb/s:per sec:ms/s:KiB/s:%:total:MB:total' 'Net in:Net out:I/O wait time:I/O requests:CPU usage:Open files:Memory:Mach ports:File opens:Forks:Failed forks:System errors' 'tsA|[ST]M[HL]' PlistBuddy{,' 2>&1'}' -c Print' 'Info\.plist' CFBundleIdentifier );f=('\n%s'{': ','\n\n'}'%s\n' '\nRAM details\n%s\n' %s{' ','\n'{"${k[22]}",}}'%s\n' '%d MB: %s\n' '\n    ...and %s more line(s)\n' '\nContents of %s\n    '"${k[22]}"'mod date: %s\n    '"${k[22]}"'checksum: %s\n%s\n' );c=(879294308 4071182229 461455494 3627668074 1083382502 1274181950 1855907737 2758863019 1848501757 464843899 2636415542 3694147963 1233118628 2456546649 2806998573 2778718105 842973933 2051385900 3301885676 891055588 998894468 695903914 1443423563 4136085286 3374894509 1051159591 892310726 1707497389 523110921 2883943871 3873345487 );s=(' s/[0-9A-Za-z._]+@[0-9A-Za-z.]+\.[0-9A-Za-z]{2,4}/EMAIL/g;/faceb/s/(at\.)[^.]+/\1NAME/g;/\/Shared/!s/(\/Users\/)[^ /]+/\1USER/g;s/[-0-9A-Fa-f]{22,}/UUID/g;' ' s/^ +//;/de: S|[nst]:/p;' ' {sub(/^ +/,"")};/er:/;/y:/&&$2<'${p[4]} ' s/:$//;3,6d;/[my].+:/d;s/^ {4}//;H;${ g;s/\n$//;/s: (E[^m]|[^EO])|x([^08]|02[^F]|8[^0])/p;} ' ' 5h;6{ H;g;/P/!p;} ' ' ($1~/^Cy/&&$3>'${p[9]}')||($1~/^Cond/&&$2!~/^N/) ' ' /:$/{ N;/:.+:/d;s/ *://;b0'$'\n'' };/^ *(V.+ [0N]|Man).+ /{ s/ 0x.... //;s/[()]//g;s/(.+: )(.+)/ (\2)/;H;};$b0'$'\n'' d;:0'$'\n'' x;s/\n\n//;/Apple[ ,]|Genesy|Intel|SMSC/d;s/\n.*//;/\)$/p;' ' s/^.*C/C/;H;${ g;/No th|pms/!p;} ' '/= [^GO]/p' '{$1=""};1' ' /Of/!{ s/^.+is |\.//g;p;} ' ' BEGIN { FS=":";if(system("sw_vers -productVersion|grep -q ^10\.1")) d="^'"${k[21]}"'launch(d\.peruser\.[0-9]+|ctl\.(Aqua|Background|System))$";} { if($2~/[1-9]/) { $2="status: "$2;printf("'"${f[4]}"'",$1,$2);} else if(!d||$1!~d) print $1;} ' ' { sub(/ :/,"");print|"tail -n'${p[10]}'";} ' ' NR==2&&$4<='${p[7]}' { print $4;} ' ' ($1~"wir"&&$2>'${p[22]}')||($1~/P.+ts:/&&$2>'${p[19]}') { print $1" "int($2);} ' '/YLD/s/=/ /p' ' { q=$1;$1="";u=$NF;$NF="";gsub(/ +$/,"");print q":"$0":"u;} ' ' /^ {6}[^ ]/d;s/:$//;/([^ey]|[^n]e):/d;/e: Y/d;s/: Y.+//g;H;${ g;s/ \n (\n)/\1/g;s/\n +(M[^ ]+)[ -~]+/ (\1)/;s/\n$//;/( {8}[^ ].*){2,}/p;} ' 's:^:/:p;' ' !/, .+:/{print};END{if(NR<'{${p[12]},${p[13]}}')printf("^'"${k[21]}"'.+")} ' '|uniq' ' 1;END { print "/L.+/Scr.+/Templ.+\.app$";print "/L.+/Pri.+\.plugin$";if(NR<'{${p[14]},${p[21]}}') print "^/[Sp].+|'${k[21]}'";} ' ' /\.(framew|lproj)|\):/d;/plist:|:.+(Mach|scrip)/s/:.+//p;' '&&echo On' '/\.(bundle|component|framework|kext|mdimporter|plugin|qlgenerator|saver|wdgt)$/p' '/\.dylib$/p' ' /Temp|emac/{next};/(etc|Preferences|Launch[AD].+)\// { sub(".","");print $0"$";} END { split("'"${c[*]}"'",c);for(i in c) print "\t"c[i]"$";} ' ' /^\/(Ap|Dev|Inc|Prev)/d;/((iTu|ok).+dle|\.(component|mailbundle|mdimporter|plugin|qlgenerator|saver|wdgt))$/p;' ' BEGIN{ FS="= "} $2 { gsub(/[()"]/,"",$2);print $2;} ' ' /^\//!d;s/^.{5}//;s/ [^/]+\//: \//p;' '>&-||echo No' '{print $3"\t"$1}' 's/\'$'\t''.+//p' 's/1/On/p' '/Prox.+: [^0]/p' '$2>'${p[2]}'{$2=$2-1;print}' ' BEGIN { M1='${p[16]}';M2='${p[18]}';M3='${p[8]}';M4='${p[3]}';} !/^A/{next};/%/ { getline;if($5<M1) o["CPU"]="CPU: user "$2"%, system "$4"%";next;} $2~/^disk/&&$4>M2 { o[$2]=$2": "$3" ops/s, "$4" blocks/s";next;} $2~/^(en[0-9]|bridg)/ { if(o[$2]) { e=$3+$4+$5+$6;if(e) o[$2]=o[$2]"; errors "e"/s";next;};if($4>M3||$6>M4) o[$2]=$2": in "int($4/1024)", out "int($6/1024)" (KiB/s)";} END { for(i in o) print o[i];} ' ' /r\[0\] /&&$NF!~/^1(0|72\.(1[6-9]|2[0-9]|3[0-1])|92\.168)\./ { print $NF;exit;} ' ' !/^T/ { printf "(static)";exit;} ' '/apsd|BKAg|OpenD/!s/:.+//p' ' (/k:/&&$3!~/(255\.){3}0/)||(/v6:/&&$2!~/A/) ' ' BEGIN{FS=": "} /^ {10}O/ {exit} /^ {0,12}[^ ]/ {next} $1~"Ne"&&$2!~/^In/{print} $1~"Si" { split($2,a," ");if(a[1]-a[4]<'${p[5]}') print;};$1~"T"&&$2<'${p[20]}'{print};$1~"Se"&&$2!~"2"{print};' ' BEGIN { FS=":";} { n=split($3,a,".");sub(/_2[01].+/,"",$3);print $2" "$3" "a[n]$1;} ' ' BEGIN { split("'"${p[1]}"'",m);FS=":";} $2<=m[$1]{next} $1<9 { o[$1]=o[$1]"\n    "$3" (UID "$4"): "$2;} $1==9&&$5!~"^/dev" { o[$1]=o[$1]"\n    "$3" (UID "$4") => "$5" (status "$6"): "$2;} $1==10&&$5 { p="ps -c -ocomm -p"$5"|sed 1d";p|getline n;close(p);if(n) $5=n;o[$1]=o[$1]"\n    "$5" => "$3" (UID "$4"): "$2;} $1~/1[12]/ { o[$1]=o[$1]"\n    "$3" (UID "$4", error "$5"): "$2;} END { n=split("'"${k[27]}"'",u,":");for(i=n+1;i<n+5;i++)u[i]=u[2];split("'"${k[28]}"'",l,":");for(i in o) print "\n"l[i]" ("u[i]")\n"o[i];} ' ' /^ {8}[^ ]/{print} ' ' BEGIN { L='${p[17]}';} !/^[[:space:]]*(#.*)?$/ { l++;if(l<=L) f=f"\n    "$0;} END { F=FILENAME;if(!F) exit;if(!f) f="\n    [N/A]";"cksum "F|getline C;split(C, A);C=A[1];"stat -f%Sm "F|getline D;"file -b "F|getline T;if(T~/^Apple b/) { f="";l=0;while("'"${k[30]}"' "F|getline g) { l++;if(l<=L) f=f"\n    "g;};};if(T!~/^(AS.+ (En.+ )?text(, with v.+)?$|(Bo|PO).+ sh.+ text ex|XM)/) F=F"\n    '"${k[22]}"'"T;printf("'"${f[8]}"'",F,D,C,f);if(l>L) printf("'"${f[7]}"'",l-L);} ' ' s/^ ?n...://p;s/^ ?p...:/-'$'\t''/p;' 's/0/Off/p' 's/^.{52}(.+) <.+/\1/p' ' /id: N|te: Y/{i++} END{print i} ' ' /kext:/ { split($0,a,":");p=a[1];k[S]='${k[25]}';k[U]='${k[26]}';v[S]="Safe";v[U]="true";for(i in k) { s=system("'"${k[30]}"'\\ :"k[i]" \""p"\"/*/I*|grep -qw "v[i]);if(!s) a[1]=a[1]" "i;};if(!a[2]) a[2]="'"${k[23]}"'";printf("'"${f[4]}"'",a[1],a[2]);next;} !/^ *$/ { p="'"${k[31]}"'\\ :'"${k[33]}"' \""$0"\"/*/'${k[32]}'";p|getline b;close(p);if(b~/, .+:/||b=="") b="'"${k[23]}"'";printf("'"${f[4]}"'",$0,b);} ' '/ en/!s/\.//p' ' NR>=13 { gsub(/[^0-9]/,"",$1);print;} ' ' $10~/\(L/&&$9!~"localhost" { sub(/.+:/,"",$9);print $1": "$9|"sort|uniq";} ' '/^ +r/s/.+"(.+)".+/\1/p' 's/(.+\.wdgt)\/(Contents\/)?'${k[32]}'$/\1/p' 's/^.+\/(.+)\.wdgt$/\1/p' ' /l: /{ /DVD/d;s/.+: //;b0'$'\n'' };/s: /{ / [VY]/d;s/^ */- /;H;};$b0'$'\n'' d;:0'$'\n'' x;/APPLE [^:]+$/d;p;' '/^find: /!p;' ' /^p/{ s/.//g;x;s/\nu/:/;s/(\n)c/\1:/;s/\n\n//;p;};H;' ' BEGIN{FS="= "} /Path/{print $2} ' ' /^ *$/d;s/^ */    /;p;' ' s/^.+ |\(.+\)$//g;p;' '1;END{if(NR<'${p[15]}')printf("^/(S|usr/(X|li))")}' ' /2/{print "WARN"};/4/{print "CRITICAL"};' ' /EVHF|MACR|^s/d;s/^.+: //p;' ' $3~/^[1-9][0-9]{0,2}(\.[1-9][0-9]{0,2}){2}$/ { i++;n=n"\n"$1"\t"$3;} END{ if(i>1)print n} ' s/{'\.|jnl: ','P.+:'}'//;s/ +([0-9]+)(.+)/\2 \1/p' ' /es: ./{ s/^.+://;b0'$'\n'' };/^ +C.+ted: +[NY]/H;/:$/b0'$'\n'' d;:0'$'\n'' x;/: +N/d;s/\n.+//p;' ' 1d;/:$/b0'$'\n'' $b0'$'\n'' /(D|^ *Loc.+): /{ s/^.+: //;H;};/(B2|[my]): /H;d;:0'$'\n'' x;/[my]: [AM]|m: I.+p$|^\/Vo/d;s/(^|\n) [ -~]+//g;s/(.+)\n(.+)/\2:\1/;s/\n//g;/[ -~]/p;' 's/$/:(0|-(4[34])?)$/p' '|sort'{'|uniq'{,\ -c},\ -nr} ' s/^/'{5,6,7,8}':/;s/ *: */:/g;p;' '/e:/{print $2}' ' /^[(]/{ s/....//;s/$/:/;N;/: [)]$/d;s/\n.+ ([^ ]+).$/\1/;H;};${ g;p;} ' 's/:.+$//p' '|wc -l' /{\\.{kext,xpc,'(appex|pluginkit)'}'\/(Contents\/)?'Info,'Launch[AD].+'}'\.plist$/p' 's/([-+.?])/\\\1/g;p' 's/, /\'$'\n/g;p' ' BEGIN{FS=":"} { printf("'"${f[6]}"'",$1/1048576,$2);} ' ' /= D/&&$1!~/'{${k[24]},${k[29]}}'/ { getline d;if(d~"t") D=D"\n"$1;} END { print D;} ' ' NR>1&&$3!~/0x|\.([0-9]{3,}|[-0-9A-F]{36})$/ { print $3":"$2;} ' '|tail -n'${p[6]} ' $1>1 { $NF=$NF" x"$1;} /\*/ { if(!f) f="\n\t* Code injection";} { $1="";} 1;END { print f;} ' ' s/.+bus /Bus: /;s/,.+[(]/ /;s/,.+//p;' ' { $NF=$NF" Errors: "$1;$1="";} 1 ' ' 1s/^/\'$'\n''/;/^ +(([MNPRSV]|De|Li).+|Bus): .|d: Y/d;s/:$//;$d;p;' ' BEGIN { RS=",";FS=":";} $1~"name" { gsub("\"","",$2);print $2;} ' '|grep -q e:/' '/[^ .]/p' '{ print $1}' ' /^ +N.+: [1-9]/ { i++;} END { if(i) print "system: "i;} ' ' NF { print "'{admin,user}' "$NF;exit;} ' ' /se.+ =/,/[\}]/!d;/[=\}]/!p ' ' 3,4d;/^ +D|Of|Fu| [0B]/d;s/^  |:$//g;$!H;${ x;/:/p;} ' ' BEGIN { FS=": ";} NR==1 { sub(":","");h="\n"$1"\n";} /:$/ { l=$1;next;} $1~"S"&&$2!~3 { getline;next;} /^ {6}I/ { i++;L[i]=l" "$2;if(i=='${p[24]}') nextfile;} END { if(i) print h;for(j=0;j<i;j++) print L[i-j];} ' ' /./H;${ x;s/\n//;s/\n/, /g;/,/p;} ' );c1=(system_profiler pmset\ -g nvram fdesetup find syslog df vm_stat sar ps crontab kextfind top pkgutil "${k[30]}\\" echo cksum kextstat launchctl smcDiagnose sysctl\ -n defaults\ read stat lsbom 'mdfind -onlyin' env pluginkit scutil 'dtrace -q -x aggsortrev -n' security sed\ -En awk 'dscl . -read' networksetup mdutil lsof test osascript\ -e netstat mdls route cat );c2=(${k[21]}loginwindow\ LoginHook ' /L*/P*/loginw*' "'tell app \"System Events\" to get properties of login items'" 'L*/Ca*/'${k[21]}'Saf*/E* -d 2 -name '${k[32]} '~ $TMPDIR.. \( -flags +sappnd,schg,uappnd,uchg -o ! -user $UID -o ! -perm -600 \)' -i '-nl -print' '-F \$Sender -k Level Nle 3 -k Facility Req "'${k[21]}'('{'bird|.*i?clou','lsu|sha'}')"' "-f'%N: %l' Desktop {/,}L*/Keyc*" therm sysload boot-args status " -F '\$Time \$Message' -k Sender kernel -k Message CRne '0xdc008012|(allow|call)ing|(mplet|nabl)ed|ry HD|safe b|xpm' -k Message CReq 'bad |Can.t l|corru|dead|fail|GPU |hfs: Ru|inval|Limiti|v_c|NVDA[(]|pagin|Purg(ed|in)|error|Refus|TCON|tim(ed? ?|ing )o|trig|WARN' " '-du -n DEV -n EDEV 1 10' 'acrx -o%cpu,comm,ruid' "' syscall::recvfrom:return {@a[execname,uid]=sum(arg0)} syscall::sendto:return {@b[execname,uid]=sum(arg0)} syscall::open*:entry {@c[execname,uid,copyinstr(arg0),errno]=count()} syscall::execve:return, syscall::posix_spawn:return {@d[execname,uid,ppid]=count()} syscall::fork:return, syscall::vfork:return, syscall::posix_spawn:return /arg0<0/ {@e[execname,uid,arg0]=count()} syscall:::return /errno!=0/ {@f[execname,uid,errno]=count()} io:::wait-start {self->t=timestamp} io:::wait-done /self->t/ { this->T=timestamp - self->t;@g[execname,uid]=sum(this->T);self->t=0;} io:::start {@h[execname,uid]=sum(args[0]->b_bcount)} tick-10sec { normalize(@a,2560000);normalize(@b,2560000);normalize(@c,10);normalize(@d,10);normalize(@e,10);normalize(@f,10);normalize(@g,10000000);normalize(@h,10240);printa(\"1:%@d:%s:%d\n\",@a);printa(\"2:%@d:%s:%d\n\",@b);printa(\"9:%@d:%s:%d:%s:%d\n\",@c);printa(\"10:%@d:%s:%d:%d\n\",@d);printa(\"11:%@d:%s:%d:%d\n\",@e);printa(\"12:%@d:%s:%d:%d\n\",@f);printa(\"3:%@d:%s:%d\n\",@g);printa(\"4:%@d:%s:%d\n\",@h);exit(0);} '" '-f -pfc /var/db/r*/'${k[21]}'*.{BS,Bas,Es,J,OSXU,Rem,up}*.bom' '{/,}L*/Lo*/Diag* -type f -regex .\*[cght] ! -name .?\* ! -name \*ag \( -exec grep -lq "^Thread c" {} \; -exec printf \* \; -o -true \) -execdir stat -f:%Sc:%N -t%F {} \;' '/S*/*/Ca*/*xpc*' '-L /{S*/,}L*/StartupItems -type f -exec file {} +' /\ kMDItemContentTypeTree=${k[21]}{bundle,mach-o-dylib} :Label "/p*/e*/{aut*,{cron,fs}tab,hosts,{[lp],sy}*.conf,mach_i*/*,pam.d/*,ssh{,d}_config,*.local} {/p*,/usr/local}/e*/periodic/*/* /L*/P*{,/*}/com.a*.{Bo,sec*.ap}*t {/S*/,/,}L*/{Lau,Sec}*/*t .launchd.conf" list '-F "" -k Sender hidd -k Nle 3' /Library/Preferences/${k[21]}alf\ globalstate --proxy '-n get default' print\ system --dns -get{dnsservers,info} dump-trust-settings\ {-s,-d,} -n1 '-R -ce -l1 -n5 -o'{'prt -stats prt','mem -stats mem'}',command,uid' -kl -l -s\ / '--regexp --files '${k[21]}'pkg.*' '+c0 -i4TCP:0-1023' ${k[21]}dashboard\ layer-gadgets '-d /L*/Mana*/$USER' '-app Safari WebKitDNSPrefetchingEnabled' '-Fcu +c0 -l' -m 'L*/{Con*/*/Data/L*/,}Pref* -type f -size 0c -name *.plist.???????' kern.memorystatus_vm_pressure_level '3>&1 >&- 2>&3' '-F \$Message -k Sender kernel -k Message CReq "'{'n Cause: -','(a und|I/O |jnl_io.+)err','USBF:.+bus'}'"' -name\ kMDItem${k[33]} -T\ hfs '-n get default' -listnetworkserviceorder :${k[33]} :CFBundleDisplayName $EUID {,'/{S*/,}'}'L*/{,Co*/*/*/L*/}{Cache,Log}s $TMPDIR../C -type f -size +'${p[11]}'M -exec stat -f'%z:%N' {} \;' \ /v*/d*/*/*l*d{,.*.$UID}/* '-app Safari UserStyleSheetEnabled' 'L*/A*/Fi*/P*/*/a*.json' users/$USER\ HomeDirectory '{/,}L*/{Con,Pref}* -type f ! -size 0 -name *.plist -exec plutil -s {} \;' ' -F "\$Time \$(Sender): \$Message" -k Level Nle 3 -k Facility R'{'ne "user|','eq "'}'console" -k Message CRne "[{}<>]|commit - no t|deprec|Goog|realp|sandbox ex|/root" ' getenv '/ "kMDItemDateAdded>=\$time.now(-'${p[23]}')&&kMDItem'${k[33]}'=*"' -m\ / '' );N1=${#c2[@]};for j in {0..20};do c2[N1+j]=SP${k[j]}DataType;done;l=({Restricted\ ,Lock,Pro}files POST Battery {Safari,App,{Bad,Loaded}\ kernel,Firefox}\ extensions System\ load boot\ args FileVault\ {2,1} {Kernel,System,Console}\ log Activity SMC Login\ hook 'I/O per process' 'High file counts' UID Daemons Agents XPC\ cache Startup\ items {Admin,Root}\ access Stylesheet Library\ paths{,' ('{shell,launchd}\)} Font\ issues Firewall Proxies DNS TCP/IP Wi-Fi 'Elapsed time (sec)' {Root,User}\ crontab {Global,User}' login items' Spotlight Memory\ pressure Listeners Widgets Parental\ Controls Prefetching Nets Volumes {Continuity,I/O,iCloud,HID,HCI}\ errors {User,System}\ {caches/logs,overrides} Shutdown\ codes Heat Diagnostic\ reports Bad\ plists Free\ space VM Bundles{,' (new)'} Trust\ settings );N3=${#l[@]};for i in {0..8};do l[N3+i]=${k[5+i]};done;F() { local x="${s[$1]}";[[ "$x" =~ ^([\&\|\<\>]|$) ]]&&{ printf "$x";return;};:|${c1[30]} "$x" 2>&-;printf "%s \'%s\'" "|${c1[30+$?]}" "$x";};A0() { Q=6;v[2]=1;id -G|grep -qw 80;v[1]=$?;((v[1]))||{ Q=7;sudo -v;v[2]=$?;((v[2]))||Q=8;};v[3]=`date +%s`;date '+Start time: %T %D%n';printf '\n[Process started]\n\n'>&4;printf 'Revision: %s\n\n' ${p[0]};};A1() { local c="${c1[$1]} ${c2[$2]}";shift 2;c="$c ` while [[ "$1" ]];do F $1;shift;done`";((P2))&&{ c="sudo $c";P2=;};v=`eval "$c"`;[[ "$v" ]];};A2() { local c="${c1[$1]}";[[ "$c" =~ ^(awk|sed ) ]]&&c="$c '${s[$2]}'"||c="$c ${c2[$2]}";shift 2;local d=` while [[ "$1" ]];do F $1;shift;done`;((P2))&&{ c="sudo $c";P2=;};local a;v=` while read a;do eval "$c '$a' $d";done<<<"$v";`;[[ "$v" ]];};A3(){ v=$((`date +%s`-v[3]));};B1() { v=No;! ((v[1]))&&{ v=;P1=1;};};eval "`type -a B1|sed '1d;s/1/2/'`";B3(){ v[$1]="$v";};B4() { local i=$1;local j=$2;shift 2;local c="cat` while [[ "$1" ]];do F $1;shift;done`";v[j]=`eval "{ $c;}"<<<"${v[i]}"`;};B5(){ v="${v[$1]}"$'\n'"${v[$2]}";};B6() { v=` paste -d$'\e' <(printf "${v[$1]}") <(printf "${v[$2]}")|awk -F$'\e' ' {printf("'"${f[$3]}"'",$1,$2)} ' `;};B7(){ v=`egrep -v "${v[$1]}"<<<"$v"|sort`;};eval "`type -a B7|sed '1d;s/7/8/;s/-v //'`";C0() { [[ "$v" ]]&&sed -E "$s"<<<"$v";};C1() { [[ "$v" ]]&&printf "${f[$1]}" "${l[$2]}" "$v"|sed -E "$s";};C2() { v=`echo $v`;[[ "$v" != 0 ]]&&C1 0 $1;};C3() { B4 0 0 63&&C1 1 $1;};C4() { echo $'\t'"Part $((++P)) of $Q done at $((`date +%s`-v[3])) sec">&4;};C5() { sudo -k;pbcopy<<<"$o";printf '\n\tThe test results are on the Clipboard.\n\n\tPlease close this window.\n';exit 2>&-;};for i in 1 2;do eval D$((i-1))'() { A'$i' $@;C0;};';for j in 2 3;do eval D$((i+2*j-3))'() { local x=$1;shift;A'$i' $@;C'$j' $x;};';done;done;trap C5 2;o=$({ A0;D0 0 N1+1 2;D0 0 $N1 1;B1;C2 27;B1&&! B2&&C2 28;D2 22 15 63;D0 0 N1+2 3;D0 0 N1+15 17;D4 3 0 N1+3 4;D4 4 0 N1+4 5;D4 N3+4 0 N1+9 59;D0 0 N1+16 99; for i in 0 1 2;do D4 N3+i 0 N1+5+i 6;done;D4 N3+3 0 N1+8 71;D4 62 1 10 7;D4 10 1 11 8;B2&&D4 18 19 53 67;D2 11 2 12 9;D2 12 3 13 10;D2 13 32 70 101 25;D2 65 6 76 13;D2 45 20 52 66;D4 66 7 77 14;D4 17 8 15 38;D0 9 16 16 77 45;C4;B2&&D0 35 49 61 75 76 78 45;B2&&{ D0 28 17 45;C4;};D0 12 40 54 16 79 45;D0 12 39 54 16 80 45;D4 31 25 77 15&&{ B4 0 8 103;B4 8 0;A2 18 74;B6 8 0 3;C3 32;};B2&&D4 19 21 0;B2&&D4 40 10 42;D2 2 0 N1+19 46 84;D2 44 34 43 53;D2 25 22 20 32;D2 33 0 N1+14 51;for i in {0..2};do A1 29 35+i 104+i;B3 25+i;done;B6 25 27 5;B6 0 26 5;B4 0 0 110;C2 69;D2 34 21 28 35;D4 35 27 29 36;A1 40 59 81;B3 18;A1 33 60 82;B8 18;B4 0 19 83;A1 27 32 39&&{ B3 20;B4 19 0;A2 33 33 40;B3 21;B6 20 21 3;};C2 36;D4 50 38 5 68;B4 19 0;D5 37 33 34 42;B2&&D4 46 35 45 55;D4 38 0 N1+20 43;B2&&D4 59 4 65 76 91;D4 63 4 19 44 75 95 96;B1&&{ D4 53 5 55 75 69&&D4 51 6 58 31;D4 56 5 56 97 75 98&&D0 0 N1+7 99;D2 55 5 27 84;D4 61 5 54 75 70;D4 14 5 14 12;D4 15 5 72 12;C4;};D4 16 5 73 12;A1 13 44 74 18;C4;B3 4;B4 4 0 85;A2 14 61 89;B4 0 5 19 102;A1 17 41 50;B7 5;C3 8;B4 4 0 88;A2 14 24 89;C4;B4 0 6 19 102;B4 4 0 86;A2 14 61 89;B4 0 7 19 102;B5 6 7;B4 0 11 73 102;A1 18 31 107 94 74||{ B2&&A1 18 26 94 74;}&&{ B7 11;B4 0 0 11;C3 23;};A1 18 26 94;B7 11;B4 0 0 11;C3 24;D4 60 14 66 92;D4 58 14 67 93;D4 26 4 21 24;D4 42 14 1 62;D4 43 37 2 90 48;D4 41 10 42;D2 48 36 47 25;A1 4 3 60&&{ B3 9;A2 14 61;B4 0 10 21;B4 9 0;A2 14 62;B4 0 0 21;B6 0 10 4;C3 5;};D4 9 41 69 100;D2 29 21 68 35;D2 49 21 48 49;B4 4 22 57 102;A1 21 46 56 74;B7 22;B4 0 0 58;C3 47;D4 54 5 7 75 76 69;D4 52 5 8 75 76 69;D4 57 4 64 76 91;D2 0 4 4 84;D2 1 4 51 84;D4 21 22 9 37;D0 0 N1+17 108; A1 23 18 28 89;B4 0 16 22 102;A1 16 25 33;B7 16;B4 0 0 34;D1 31 47;D4 64 4 71 41;C4;B4 4 12 26 89 23 102;for i in {0..3};do A1 0 N1+10+i 72 74;B7 12;B4 0 0 52;C3 N3+5+i;((i))||C4;done;A1 24 22 29;B7 12;B3 14;A2 39 57 30;B3 15;B6 14 15 4;C3 67;A1 24 75 74;B3 23;A2 39 57 30;B3 24;B6 23 24 4;C3 68;B4 4 13 27 89 65;A1 24 23;B7 13;C3 30;B4 4 0 87;A2 14 61 89 20;B4 0 17;A1 26 50 64;B7 17;C3 6;D0 0 N1+18 109;D4 7 11 6;A3;C2 39;C4;} 4>&2 2>/dev/null;);C5
    Copy the selected text to the Clipboard by pressing the key combination command-C.
    8. Launch the built-in Terminal application in any of the following ways:
    ☞ Enter the first few letters of its name into a Spotlight search. Select it in the results (it should be at the top.)
    ☞ In the Finder, select Go ▹ Utilities from the menu bar, or press the key combination shift-command-U. The application is in the folder that opens.
    ☞ Open LaunchPad and start typing the name.
    Click anywhere in the Terminal window and paste by pressing command-V. The text you pasted should vanish immediately. If it doesn't, press the return key.
    9. If you see an error message in the Terminal window such as "Syntax error" or "Event not found," enter
    exec bash
    and press return. Then paste the script again.
    10. If you're logged in as an administrator, you'll be prompted for your login password. Nothing will be displayed when you type it. You will not see the usual dots in place of typed characters. Make sure caps lock is off. Type carefully and then press return. You may get a one-time warning to be careful. If you make three failed attempts to enter the password, the test will run anyway, but it will produce less information. In most cases, the difference is not important. If you don't know the password, or if you prefer not to enter it, just press return three times at the password prompt. Again, the script will still run.
    If you're not logged in as an administrator, you won't be prompted for a password. The test will still run. It just won't do anything that requires administrator privileges.
    11. The test may take a few minutes to run, depending on how many files you have and the speed of the computer. A computer that's abnormally slow may take longer to run the test. While it's running, a series of lines will appear in the Terminal window like this:
    [Process started]
            Part 1 of 8 done at … sec
            Part 8 of 8 done at … sec
            The test results are on the Clipboard.
            Please close this window.
    [Process completed]
    The intervals between parts won't be exactly equal, but they give a rough indication of progress. The total number of parts may be different from what's shown here.
    Wait for the final message "Process completed" to appear. If you don't see it within about ten minutes, the test probably won't complete in a reasonable time. In that case, press the key combination control-C or command-period to stop it and go to the next step. You'll have incomplete results, but still something.
    12. When the test is complete, or if you stopped it because it was taking too long, quit Terminal. The results will have been copied to the Clipboard automatically. They are not shown in the Terminal window. Please don't copy anything from there. All you have to do is start a reply to this comment and then paste by pressing command-V again.
    At the top of the results, there will be a line that begins with the words "Start time." If you don't see that, but instead see a mass of gibberish, you didn't wait for the "Process completed" message to appear in the Terminal window. Please wait for it and try again.
    If any private information, such as your name or email address, appears in the results, anonymize it before posting. Usually that won't be necessary.
    13. When you post the results, you might see an error message on the web page: "You have included content in your post that is not permitted," or "You are not authorized to post." That's a bug in the forum software. Please post the test results on Pastebin, then post a link here to the page you created.
    14. This is a public forum, and others may give you advice based on the results of the test. They speak only for themselves, and I may not agree with them.
    Copyright © 2014, 2015 by Linc Davis. As the sole author of this work, I reserve all rights to it except as provided in the Use Agreement for the Apple Support Communities website ("ASC"). Readers of ASC may copy it for their own personal use. Neither the whole nor any part may be redistributed.

  • Substr to get the date and validate

    Hi all,
    I had a file with name as Emp_Names20101028_123245.txt
    Now i want to validate the date part ( 20101028_123245 ) in the filename having the format YYYYMMDD HH24:MM:SS.
    The date format should be only in the format as shown as above.other wise it should thrown an exception in a plsql procedure.
    Declare
    l_filename Varchar2(30);
    Begin
    l_filename = 'Emp_Names20101028_123245.txt'
    /* Sql statement to check the format */
    Exception
    When others
    Dbms_output.put_line(" Invalid File date Format");
    End;Edited by: Rede on Dec 1, 2010 12:41 PM

    Hi, Rede,
    Rede wrote:
    Frank
    Will the given mask ever contain other variable-length items, such as 'RRRR' or 'fmMONTH'?
    No, The give mask is standard.It will not  contain the Variable length items.
    That makes things a lot simpler! If the date is always in a standard format, there's no real need to use a varaible.
    Is there any other way you can determine what the date part of l_filename is? For example, does it always come after '...Names' and before '.txt'?
    It will always comes after the '...Names' and before '.txt'.
    I think we can use the SUBSTR function but there is an underscore (_) which is making a little complex sql statement.The underscore only has special meaning when you're using the LIKE operator, and even then, it can be escaped.
    Yes, you can use SUBSTR, like this:
    TO_DATE ( SUBSTR ( l_filename
                 , 6 + INSTR ( TRANSLATE ( UPPER (l_filename)
                                            , '012345678'
                              , '999999999'
                        , 'NAMES99999999_999999.TXT'
               , 15
            , 'YYYYMMDD_HH24MISS'
    REGEXP will be slower option, so i am looking to avoid REGEXP int his case.That's a good thing to keep in mind, but does it really matter in this case? Are you going to be parsing thousands of filenames at a time?

  • Regexp in sql query

    Hai all,
    i want to get value from decimal column as tow columns using "regexp" in sql query
    that means 72.58 value
    as 72 value1 , 58 value2
    need help.........

    Hi Hari,
    Made a format change in query using decode.
    SQL> with t
      2  as
      3  (
      4  select '12.58' str from dual union all
      5  select '.72' str from dual
      6  )
      7  select regexp_substr(decode(substr(str,1,1),'.',lpad(str,length(str)+1,'0'),
      8                              str),'[^.]+',1,1) val1,
      9  regexp_substr(decode(substr(str,1,1),'.',lpad(str,length(str)+1,'0'),
    10                              str),'[^.]+',1,2) val2
    11  from t
    12  /
    VAL1       VAL2
    12         58
    0          72

  • Tricky Regexp and string to column-row SQL

    Hi All,
    I am TRYING to build an SQL that will convert a string passed as
    HP|250 GB * 2 + 80 GB * 3 + 100 GB | SATAto
    HP | 250 GB | SATA
    HP | 250 GB | SATA
    HP | 80 GB | SATA
    HP | 80 GB | SATA
    HP | 80 GB | SATA
    HP | 100 GB | SATAMy attempt so far is (which tells me to learn more about regexp)
    WITH T AS
      ( SELECT q'[HP|250 GB * 2 + 80 GB * 3 + 100 GB | SATA]' str FROM DUAL
      t2 AS
      (SELECT trim(regexp_substr(str,'[^|]+',1,level)) val
       FROM T
       CONNECT BY level <= LENGTH (str)-LENGTH(REPLACE(str,'|'))+1
      ),t3 AS
    (SELECT DISTINCT trim(regexp_substr(val,'[^+]+',1,level)) val
    FROM t2 WHERE VAL LIKE '%*%' OR VAL LIKE '%+%'
    CONNECT BY level <= LENGTH (val)-LENGTH(REPLACE(val,'+'))+1
      ),t4 as
      (SELECT VAL,ROWNUM RN FROM T2 A1
       WHERE VAL NOT LIKE '%*%' OR VAL NOT LIKE '%+%'),
      t5 as
      (SELECT A.VAL MK, T3.VAL CONFG, B.VAL TYP
       FROM   T3, (SELECT VAL FROM T4 WHERE RN = 1)A,(SELECT VAL FROM T4 WHERE RN = 2) B)
       SELECT *
       FROM   T5;And output I got so far is:
    MK                                        CONFG                                     TYP                                      
    HP                                        80 GB * 3                                 SATA                                     
    HP                                        250 GB * 2                                SATA                                     
    HP                                        100 GB                                    SATA                                      Please suggest what more shall I do to get the desired output(An SQL)?
    BANNER                                                                          
    Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - Production          
    PL/SQL Release 11.2.0.1.0 - Production                                          
    CORE     11.2.0.1.0     Production                                                        
    TNS for 32-bit Windows: Version 11.2.0.1.0 - Production                         
    NLSRTL Version 11.2.0.1.0 - Production  Thanks for reading this post
    *009*

    with t1 as (
                select 'HP|250 GB * 2 + 80 GB * 3 + 100 GB | SATA' str from dual union all
                select 'INTEL|40 GB  + 55 GB| IDE' from dual
         t2 as (
                select  regexp_substr(str,'^[^|]+') mk,
                        trim(regexp_substr(replace(str,'|','+'),'[^+]+',1,column_value + 1)) element,
                        regexp_substr(str,'[^|]+$') typ
                  from  t1,
                        table(
                              cast(
                                   multiset(
                                            select  level
                                              from  dual
                                              connect by level <= length(regexp_replace(str || '+','[^+]'))
                                   as sys.OdciNumberList
    select  mk,
            trim(regexp_replace(element,'\*.*$')) val,
            typ
      from  t2,
            table(
                  cast(
                       multiset(
                                select  level
                                  from  dual
                                  connect by level <= substr(regexp_substr(element,'\*.*$'),2)
                       as sys.OdciNumberList
    MK         VAL        TYP
    HP         250 GB      SATA
    HP         250 GB      SATA
    HP         80 GB       SATA
    HP         80 GB       SATA
    HP         80 GB       SATA
    HP         100 GB      SATA
    INTEL      40 GB       IDE
    INTEL      55 GB       IDE
    8 rows selected.
    SQL> SY.
    P.S. Post your version. If 11.1 it can be simplified. If 11.2 can be simplified even more.

  • Regexp and ampersand

    Hi all,
    I am using regexp to substring a clob of data. The data contains an ampersand (&) so i will need to add this to my regexp. The trouble is it doesnt take it as a literal character (even when using the escape [\] char before it), instead it thinks i am trying to define a variable input field.
    Any ideas?
    Thanks for your time,
    James

    Hi!
    Read and try this:
    SQL*Plus
    When issuing SQL from within SQL*Plus several considerations need to be made.
    An ampersand (&) will be treated as a define variable so should it appear in the
    pattern as a text literal, you will be prompted to enter it's value. This behaviour can
    be removed by setting the SQL*Plus variable DEFINE to be OFF.
    If the SQL*Plus variable ESCAPE is set to ON then any instance of the escape
    variable will be stripped. This is unfortunate for regular expressions as the default
    escape character is backslash (\) which is a common metacharacter. To be safe it is
    best to ensure that ESCAPE is set to OFF before issuing a regular expression
    query.
    link: http://www.oracle.com/technology/products/database/application_development/pdf/TWP_Regular_Expressions.pdf
    Hope this helps!

  • To find out " dot" using substr in oracle

    Hi ,
    I would like to find "Dot" between Schemaname and table name using substring in Oracle . I am using oracle 9i.I can't use Regexp in Oracle 9i
    Schemaname .tablename
    Table name can be any no of characters
    Schema name also can be any no of characters
    Regards,
    User

    Are you looking for this?
    satyaki>
    satyaki>select * from v$version;
    BANNER
    Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Prod
    PL/SQL Release 10.2.0.1.0 - Production
    CORE    10.2.0.1.0      Production
    TNS for Linux: Version 10.2.0.1.0 - Production
    NLSRTL Version 10.2.0.1.0 - Production
    Elapsed: 00:00:00.01
    satyaki>
    satyaki>
    satyaki>
    satyaki>declare
      2    str  varchar2(30);
      3    ctr  varchar2(30);
      4  begin
      5    str := 'SCOTT.EMP';
      6   
      7    ctr := 'SCOTT';
      8   
      9    if ctr = substr(str,1,instr(str,'.')) then
    10        dbms_output.put_line('User Matches....');
    11    else
    12      dbms_output.put_line('User Does Not Matches....');
    13    end if;
    14  end;
    15  /
    User Does Not Matches....
    PL/SQL procedure successfully completed.
    Elapsed: 00:00:00.01
    satyaki>
    satyaki>declare
      2    str  varchar2(30);
      3    ctr  varchar2(30);
      4  begin
      5    str := 'SCOTT.EMP';
      6   
      7    ctr := 'SCOTT';
      8   
      9    if ctr = substr(str,1,instr(str,'.')-1) then
    10        dbms_output.put_line('User Matches....');
    11    else
    12      dbms_output.put_line('User Does Not Matches....');
    13    end if;
    14  end;
    15  /
    User Matches....
    PL/SQL procedure successfully completed.
    Elapsed: 00:00:00.00
    satyaki>Regards.
    Satyaki De.

  • Sql query substring

    Hi,
    In my table i am having employee name like this
    EX:
    BOSE, Mr. BIRAT
    NANDY, Mr. AMITABHA
    The name before comma is the last name and after that is first Name
    Now i want to show in the front end like this for the above two
    Mr. BIRAT BOSE
    Mr. AMITABHA NANDY
    How to write an Sql query where you can get the Name before comma and place at the end of the name and remove the comma from it also for display purpose.
    Thanks,

    Non RegExp Solution
    SQL> with t
      2  as
      3  (
      4  select 'BOSE, Mr. BIRAT' name from dual union all
      5  select 'NANDY, Mr. AMITABHA' from dual
      6  )
      7  select name,
      8         substr(name, instr(name, ',', 1,1)+1) || ' ' || substr(name, 1, instr(name, ',',1,1)-1) new_name
      9    from t
    10  /
    NAME                NEW_NAME
    BOSE, Mr. BIRAT      Mr. BIRAT BOSE
    NANDY, Mr. AMITABHA  Mr. AMITABHA NANDY
    SQL>

  • Clean unnecessary characters

    Hello,
    I transfer data from CSV/TXT file to BW info cube.
    I looking for mapping function that help me to clean characters if have more then 40 characters.
    For example: sometimes I have in the field text with 34 and it's OK.
                       In other time I have text with 41 characters and I want to transfer only the first 40 character.
    Regards
    Elad

    Hi Elad,
    Check out the reply posted by Stefan in the below thread:-
    Re: Message Mapping error with substring
    Hope this provides a solution.
    Regards.
    Praveen

  • Indexed substring search

    Let's say I have lots of instances of the following class:   public class Bob {
          public final String name;
          public Bob(String name) {
             if (name==null) throw new ArgumentException();
             this.name=name;
       }The name of a bob can be pretty much anything, but usually it is 5-50 characters long and consists of ordinary words.
    E.g.   List bobs=new ArrayList();
       bobs.add(new Bob("I am bob"));
       bobs.add(new Bob("foo bar"));
       bobs.add(new Bob("once upon a time there was a bob with a long name, and he's me"));How do I index the bobs so that I can search for the set of all bobs whose names contain a given substring. E.g., searching for "am" should result in a set containing the first ("I am bob") and the third ("...long name...") of the three bobs above.
    If the substring is a whole word or at the beginning of one then it's easy; just keep a list of &lang;String word, Bob[] bobs&rang; tuples (each one listing all bobs whose name contains the word), sorted by word. Then you can do a binary search for the words you're interested in and put all matching bobs in a set that you'll then return.
    However, if the substring is not at a word boundary it gets a lot harder!
    The fact that there are so many bobs (perhaps a million) also places some constraints on the relative size of the indexes. After all, we don't want the index data structures to consume many times more memory than the bobs themselves do.
    Any ideas?
    - Marcus Sundman

    I came up with this. I don't know if it's a good solution for you or at all but it seems to work and minimizes the nodes down to the size of the alphabet.
    It can surely be optimized and cleaned up. Feel free to modify. Let me know what you think:
    import java.util.*;
    public class FancyTree
        public static void main(String[] args)
            FancyTree tree = new FancyTree();
            tree.add("amble");
            tree.add("same");
            tree.add("name");
            tree.add("mean");
            tree.add("earn");
            tree.add("glean");
            tree.add("same meaning");
            tree.add("meanie");
            System.out.println("a: " + tree.findStrings("a"));
            System.out.println("i: " + tree.findStrings("i"));
            System.out.println("am: " + tree.findStrings("am"));
            System.out.println("sa: " + tree.findStrings("sa"));
            System.out.println("me: " + tree.findStrings("me"));
            System.out.println("samean: " + tree.findStrings("samean"));
            System.out.println("mean: " + tree.findStrings("mean"));
            System.out.println("ean: " + tree.findStrings("ean"));
            System.out.println("ea: " + tree.findStrings("ea"));
        private Node[] nodes = new Node[255];
        public void add(String s)
            Link parent = null;
            for (int i = 0; i < s.length(); i++) {
                Link link = new Link(s, parent);
                getNode(s.charAt(i)).add(link);
                parent = link;
        private Node getNode(char c)
            if (c > 255) throw new IllegalArgumentException();
            Node node = nodes[c];
            if (node == null) {
                node = new Node();
                nodes[c] = node;
            return node;
        public Set findStrings(String subString)
            Collection links = getNode(subString.charAt(0)).getLinks();
            for (int i = 1; i < subString.length() && links.size() > 0; i++) {
                links = getNode(subString.charAt(i)).getLinks(links);
            Set strings = new HashSet();
            for (Iterator i = links.iterator(); i.hasNext(); ) {
                strings.add(((Link) i.next()).getStringParent());
            return strings;
    class Node
        private Map links = new HashMap();
        public void add(Link link)
            links.put(link.getParent(), link);
        public Collection getLinks()
            return links.values();
        public Set getLinks(Collection parents)
            HashSet set = new HashSet();
            for (Iterator i = parents.iterator(); i.hasNext();) {
                Object link = links.get(i.next());
                if (link != null) set.add(link);
            return set;
    class Link
        private String stringParent;
        private Link linkParent;
        Link(String stringParent, Link linkParent)
            this.stringParent = stringParent;
            this.linkParent = linkParent;
        public Object getParent()
              return linkParent == null ? (Object) stringParent : linkParent;
        public String getStringParent()
            return stringParent;
    }

  • Spliting Column with a Substring and Charindex

    I have a column in my database that stores title, first name and last name. But data in this column is not clean as sometimes, the customer's title is missing or null, other time the first name is not available and some other time, the last name is
    void. Now, I want to separate or split the column into three - Title, FirstName, LastName bearing in mind that I have to check for nulls or empty data. How do I clean this data so that errors like:
    Msg 536, Level 16, State 2, Line 1
    Invalid length parameter passed to the RIGHT function.
    or
    Msg 537, Level 16, State 2, Line 1
    Invalid length parameter passed to the LEFT or SUBSTRING function.
    are not returned.
    I wrote a script like this but not good enough.
    SELECT FullName
    , LEFT(FullName, ISNULL(NULLIF(CHARINDEX(' ', FullName) - 1, -1), LEN(FullName))) AS Title
    , RIGHT(Salute, LEN(Salute) - CHARINDEX(' ', FullName, 1)) FirstName
    , SUBSTRING(FullName, 1, CHARINDEX(' ', FullName, 19) - 1) LastName
    FROM Details
    If we have a title and a name, we should split into 'Title', 'FirstName'. If no title, we will treat it as 'FirstName' and 'LastName' 
    Thank you!
    Zionlite

    create table T (
      [Name] varchar(40)
    insert into T ([Name]) values ('Doe,John E')
    insert into T ([Name]) values ('Doe,Andy')
    insert into T ([Name])  values ('Doe,Tim W')
    ---go
    select LastName, FirstName, MiddleName
    from (
      select
        Name,
        substring(Name,1,Comma-1) LastName,
        substring(Name,Comma+1,Spce-Comma-1) FirstName,
        nullif(substring(Name,Spce+1,40),'') MiddleName
      from (
        select
          Name,
          charindex(',',Name) Comma,
          charindex(' ',Name+space(1),charindex(',',Name)) Spce
        from T
      ) D
    ) SplitNames
    Best Regards,Uri Dimant SQL Server MVP,
    http://sqlblog.com/blogs/uri_dimant/
    MS SQL optimization: MS SQL Development and Optimization
    MS SQL Consulting:
    Large scale of database and data cleansing
    Remote DBA Services:
    Improves MS SQL Database Performance
    SQL Server Integration Services:
    Business Intelligence

Maybe you are looking for

  • Is Quick Time player the same as QT Movie?

    I am trying to convert an MP3 audio file to AIFF. I'm used to using QT but now, I can't seem to get the conversion to happen. Is it because I am using QT P;ayer instead of Movie, and if so, how do I fix this? Thanks in advance... PowerMac G-4   Mac O

  • Problem with Windows Form called from SAP

    I have a simple VB.NET windows form that I'm calling from a new menu click event from within SAP. The form loads, as expected, when the menu item is clicked, but the form will always load outside of the SAP window and thus cannot be seen by the user

  • Input output error samsung ssd mac 09

    I bought a Samsung SSD 840 EVO drive because my drive from my macbook had a destroyed file and broken. Yesterday I tried to partition the drive into 1 with GUID but the error came up with : POSIX reports: The operation couldn't be completed. Cannot a

  • OSHA Reports

    I am trying to configure for the OSHA Reports as per USA laws, by using the Infotype 0082 (Additional Absence Data) which is part of time management. But, as per my client requirement, I am not able to get all the content covered. I see lot of of OSH

  • Birthday Filter settings

    Hi How to do filter settings for Bday in segment builder. Then what are the settings to be done in campign automation for sending e-mail on Bday. As per the OSS note: 912004 i have made the change. Thanks Masthan