【RHCE】awk文本處理

目錄

基本介紹

命令格式

awk基本使用

命令行讀取程序腳本

數據字段變量

腳本中使用多個命令

文件中讀取程序

處理數據前運行腳本(BEGIN)

處理數據后運行腳本(END)

awk高級用法

變量

內建變量

自定義變量

數組

定義數組變量

遍歷數組變量

刪除數組變量

使用模式

正則表達式

匹配操作符

數學表達式

結構化命令

if語句

while語句

do-while語句

for語句

內建函數

數學函數

字符串函數

時間函數

自定義函數


基本介紹

AWK是一種強大的文本處理工具,常用于在 Linux/Unix 系統中對文本文件進行模式掃描和處理。它非常適合處理結構化文本數據(如日志文件、CSV 文件等),并支持按行處理、字段提取、條件過濾和計算等操作。awk編程語言中,你可以做下面的事情:

定義變量來保存數據;
使用算術和字符串操作符來處理數據;
使用結構化編程概念(比如 if-then 語句和循環)來為數據處理增加處理邏輯;
通過提取數據文件中的數據元素,將其重新排列或格式化,生成格式化報告。

命令格式

awk 程序的基本格式如下:
awk options program file
常用選項描述
-F
指定行中劃分數據字段的字段分隔符
-f
從指定的文件中讀取程序
-v
定義 awk 程序中的一個變量及其默認值
-mf
指定要處理的數據文件中的最大字段數
-mr
指定數據文件中的最大數據行數
命令行選項提供了一個簡單的途徑來定制 awk 程序中的功能。我們會在探索 awk 時進一步了解這些選項。
awk 的強大之處在于程序腳本。可以寫腳本來讀取文本行的數據,然后處理并顯示數據,創建任何類型的輸出報告。

awk基本使用

命令行讀取程序腳本

awk 程序腳本用一對花括號來定義。你必須將腳本命令放到兩個花括號( {} )中。如果你錯誤地使用了圓括號來包含awk 腳本,就會得到一條類似于下面的錯誤提示。
[root@localhost ~]# awk '{print "Hello World!"}'
1
Hello World!
1
Hello World!

print命令會將文本打印到標準輸出,若沒有指定文本文件會從標準輸入中接受數據。?

數據字段變量

awk的主要特性之一是其處理文本文件中數據的能力。它會自動給一行中的每個數據元素分配
一個變量。默認情況下, awk會將如下變量分配給它在文本行中發現的數據字段:?
$0
代表整個文本行;
$1
代表文本行中的第 1 個數據字段;
$2
代表文本行中的第 2 個數據字段;
$n
代表文本行中的第 n 個數據字段。

以下為從data2.txt文件中獲取每行的第一個字段和第二個字段。

[root@localhost ~]# cat data2.txt
One line of test text.
Two lines of test text.
Three lines of test text.[root@localhost ~]# awk '{print $1,$2}' data2.txt 
One line
Two lines
Three lines

此外也可以用-F選項指定字段分割符

[root@localhost ~]# awk -F : '{print $1}' /etc/passwd | head -3
root
bin
daemon

腳本中使用多個命令

在腳本中運行多個命令,若在同一行中,只需在兩條命令中加 ; 即可。

[root@localhost ~]# awk '{print "hello";print "world"}'hello
world

?若在不同行中,則無需 ;。

[root@localhost ~]# awk '{
> print "hello"
> print "world"
> }'hello
world

文件中讀取程序

awk使用 -f 參數從指定文件中讀取程序

[root@localhost ~]# cat script2.awk 
{print $1,"'s home is",$6
}[root@localhost ~]# awk -F : -f script2.awk /etc/passwd | head -3
root 's home is /root
bin 's home is /bin
daemon 's home is /sbin

處理數據前運行腳本(BEGIN)

awk 還允許指定程序腳本何時運行。默認情況下, awk 會從輸入中讀取一行文本,然后針對該行的數據執行程序腳本。有時可能需要在處理數據前運行腳本,比如為報告創建標題。
BEGIN關鍵字就是用來做這個的。它會強制awk 在讀取數據前執行 BEGIN 關鍵字后指定的程序腳本。
[root@localhost ~]# cat data3.txt 
Line 1
Line 2
Line 3
[root@localhost ~]# awk 'BEGIN {print "data3.txt:"}{print $0}' data3.txt 
data3.txt:
Line 1
Line 2
Line 3

處理數據后運行腳本(END)

BEGIN 關鍵字類似, END 關鍵字允許你指定一個程序腳本, awk 會在讀完數據后執行它。
可以用END來做頁腳、報告總結等。
[root@localhost ~]# awk 'BEGIN {print "data3.txt:"}{print $0}END{print "end of file"}' data3.txt 
data3.txt:
Line 1
Line 2
Line 3
end of file

awk高級用法

變量

所有編程語言共有的一個重要特性是使用變量來存取值。 awk 編程語言支持兩種不同類型的變量:
  1. 內建變量
  2. 自定義變量

awk有一些自帶的內建變量,用于存放處理數據文件中的數據字段和記錄的信息等。

內建變量

  1. 字段和記錄分隔符變量
變量描述
FIELDWIDTHS
由空格分隔的一列數字,定義了每個數據字段確切寬度
FS
輸入字段分隔符
RS
輸入記錄分隔符
OFS
輸出字段分隔符
ORS
輸出記錄分隔符

?在BEGIN中用FS指定輸入字段分割符,OFS指定輸出字段分隔符,若不指定則都為空格。

[root@localhost ~]# cat data1.txt 
data11,data12,data13,data14,data15
data21,data22,data23,data24,data25
data31,data32,data33,data34,data35[root@localhost ~]# awk 'BEGIN{FS=","}{print $1,$2,$3}' data1.txt 
data11 data12 data13
data21 data22 data23
data31 data32 data33[root@localhost ~]# awk 'BEGIN{FS=",";OFS="-"}{print $1,$2,$3}' data1.txt 
data11-data12-data13
data21-data22-data23
data31-data32-data33

?FIELDWIDTHS可以精確的指定每個字段的長度,這種方法不適用與變長的字段。

[root@localhost ~]# awk 'BEGIN{FIELDWIDTHS="3 5 2 5"}{print $1,$2,$3,$4}' data1.txt 
dat a11,d at a12,d
dat a21,d at a22,d
dat a31,d at a32,d

?在awk中,可以根據情況指定RS輸入記錄分割符,以應對特殊情況。

[root@localhost ~]# cat data4.txt 
Riley Mullen
123 Main Street
Chicago, IL 60601
(312)555-1234Frank Williams
456 Oak Street
Indianapolis, IN 46201
(317)555-9876Haley Snell
4231 Elm Street
Detroit, MI 48201
(313)555-4938[root@localhost ~]# awk 'BEGIN{FS="\n";RS=""}{print $1,$4}' data4.txt 
Riley Mullen (312)555-1234
Frank Williams (317)555-9876
Haley Snell (313)555-4938

  1. 數據變量
除了字段和記錄分隔符變量外, awk 還提供了其他一些內建變量來幫助你了解數據發生了什么變化,并提取shell 環境的信息。下表列出了 awk 中的其他內建變量。
變量
描述
ARGC
當前命令行參數個數
ARGIND
當前文件在 ARGV 中的位置
ARGV
包含命令行參數的數組
CONVFMT
數字的轉換格式(參見 printf 語句),默認值為 %.6 g
ENVIRON
當前 shell 環境變量及其值組成的關聯數組
ERRNO
當讀取或關閉輸入文件發生錯誤時的系統錯誤號
FILENAME
用作 awk 輸入數據的數據文件的文件名
FNR
當前數據文件中的數據行數
IGNORECASE
設成非零值時,忽略 awk 命令中出現的字符串的字符大小寫
NF
數據文件中的字段總數
NR
已處理的輸入記錄數
OFMT
數字的輸出格式,默認值為 %.6 g
RLENGTH
match 函數所匹配的子字符串的長度
RSTART
match 函數所匹配的子字符串的起始位置

自定義變量

跟其他典型的編程語言一樣, awk 允許你定義自己的變量在程序代碼中使用。 awk 自定義變量名可以是任意數目的字母、數字和下劃線,但不能以數字開頭。重要的是,要記住awk 變量名區分大小寫。
[root@localhost ~]# awk 'BEGIN{testing="hello world"}{print testing}'hello world

自定義變量除了可以存字符串,也可以存數值,并進行數值運算

[root@localhost ~]# awk 'BEGIN{a=10
> a=a+15
> }
> {
> print a
> }'25

也可以在命令行上給變量賦值

[root@localhost ~]# cat data1.txt 
data11,data12,data13,data14,data15
data21,data22,data23,data24,data25
data31,data32,data33,data34,data35[root@localhost ~]# awk -F , '{print $n}' n=3 data1.txt 
data13
data23
data33

但這種方法賦值的變量在BEGIN中不生效

[root@localhost ~]# awk -F , 'BEGIN{print n}{print $n}' n=3 data1.txt data13
data23
data33

也可以使用 -v 參數賦值變量,這樣聲明的變量在BEGIN中也能使用

[root@localhost ~]# awk -F , -v n=3 'BEGIN{print n}{print $n}' data1.txt 
3
data13
data23
data33

數組

為了在單個變量中存儲多個值,許多編程語言都提供數組。 awk 編程語言使用關聯數組提供數組功能。
關聯數組跟數字數組不同之處在于它的索引值可以是任意文本字符串。你不需要用連續的數字來標識數組中的數據元素。相反,關聯數組用各種字符串來引用值。每個索引字符串都必須能夠唯一地標識出賦給它的數據元素。

定義數組變量

[root@localhost ~]# cat script3.awk 
BEGIN{str["name"] = "xiaoming"str["age"] = 18str["sex"] = "man"	
}
{print str["name"]	
}
[root@localhost ~]# awk -f script3.awk xiaoming

遍歷數組變量

在awk中遍歷數組,可以使用for in語句

for (var in array)
{
statements
}

?這個for語句會在每次循環時將關聯數組array的下一個索引值賦給變量var,然后執行一遍 statements。

[root@localhost ~]# cat script3.awk 
BEGIN{str["name"] = "xiaoming"str["age"] = 18str["sex"] = "man"	
}
{for(s in str){print s,":",str[s]}	
}
[root@localhost ~]# awk -f script3.awk age : 18
sex : man
name : xiaoming

刪除數組變量

從關聯數組中刪除數組索引要用一個特殊的命令。
delete array[index]
刪除命令會從數組中刪除指定的鍵值對。
[root@localhost ~]# cat script3.awk 
BEGIN{str["name"] = "xiaoming"str["age"] = 18str["sex"] = "man"	
}
{delete str["age"]for(s in str){print s,":",str[s]}	
}
[root@localhost ~]# awk -f script3.awk sex : man
name : xiaoming

使用模式

awk 程序支持多種類型的匹配模式來過濾數據記錄 BEGIN 和END關鍵字是用來在讀取數據流之前或之后執行命令的特殊模式。類似地,你可以創建其他模式在數據流中出現匹配數據時執行一些命令。

正則表達式

可以用基礎正則表達式( BRE )或擴展正則表達式( ERE )來選擇程序腳本作用在數據流中的哪些行上。在使用正則表達式時,正則表達式必須出現在它要控制的程序腳本的左花括號前。
[root@localhost ~]# cat data5.txt 
Alice 25 Engineer
Bob 30 Doctor
Charlie 22 Student
David 35 Lawyer
Eve 28 Artist[root@localhost ~]# awk '/^C/{print $0}' data5.txt 
Charlie 22 Student

匹配操作符

匹配操作符( matching operator )允許將正則表達式限定在記錄中的特定數據字段。匹配操
作符是波浪線( ~ )。可以指定匹配操作符、數據字段變量以及要匹配的正則表達式。(!~)表示取反。
[root@localhost ~]# cat data5.txt 
Alice 25 Engineer
Bob 30 Doctor
Charlie 22 Student
David 35 Lawyer
Eve 28 Artist[root@localhost ~]# awk '$3 ~ /i/{print $0}' data5.txt 
Alice 25 Engineer
Eve 28 Artist[root@localhost ~]# awk '$3 !~ /i/{print $0}' data5.txt 
Bob 30 Doctor
Charlie 22 Student
David 35 Lawyer

數學表達式

除了正則表達式,你也可以在匹配模式中用數學表達式。這個功能在匹配數據字段中的數字值時非常方便。

可以使用常見的數學比較表達式:

x == y
x 等于 y
x <= y
x 小于等于 y
x < y
x 小于 y
x >= y
x 大于等于 y
x > y
x 大于 y
[root@localhost ~]# cat data5.txt 
Alice 25 Engineer
Bob 30 Doctor
Charlie 22 Student
David 35 Lawyer
Eve 28 Artist[root@localhost ~]# awk '$2>=25{print $0}' data5.txt 
Alice 25 Engineer
Bob 30 Doctor
David 35 Lawyer
Eve 28 Artist[root@localhost ~]# awk 'BEGIN{FS=":"}$1=="root"{print $0}' /etc/passwd
root:x:0:0:root:/root:/bin/bash[root@localhost ~]# awk 'BEGIN{FS=":"}$1>="q"{print $0}' /etc/passwd
root:x:0:0:root:/root:/bin/bash
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
tss:x:59:59:Account used for TPM access:/:/usr/sbin/nologin
systemd-coredump:x:999:997:systemd Core Dumper:/:/sbin/nologin
sssd:x:997:995:User for sssd:/:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/usr/share/empty.sshd:/usr/sbin/nologin
redhat:x:1000:1000:redhat:/home/redhat:/bin/bash
rpc:x:32:32:Rpcbind Daemon:/var/lib/rpcbind:/sbin/nologin
rpcuser:x:29:29:RPC Service User:/var/lib/nfs:/sbin/nologin

結構化命令

if語句

[root@localhost ~]# cat data6.txt 
10
5
13
50
34
[root@localhost ~]# awk '{if($1 > 20) print $1}' data6.txt 
50
34
awk if 語句也支持 else 子句,允許在 if 語句條件不成立的情況下執行一條或多條語句。

[root@localhost ~]# cat script4.awk 
{if($1%400==0){print $1 " is Leap Year"}else if($1%4==0 && $1%100!=0)print $1 " is Leap Year"elseprint $1 " not is Leap Year"}
[root@localhost ~]# cat data7.txt 
2014
2020
2017
2019
2024
2026
1900
[root@localhost ~]# awk -f script4.awk data7.txt 
2014 not is Leap Year
2020 is Leap Year
2017 not is Leap Year
2019 not is Leap Year
2024 is Leap Year
2026 not is Leap Year
1900 not is Leap Year

while語句

while 循環允許遍歷一組數據,并檢查迭代的結束條件。如果在計算中必須使用每條記錄中的多個數據值,這個功能能幫得上忙。
[root@localhost ~]# cat data8.txt 
130 120 135
160 113 140
145 170 215
[root@localhost ~]# cat script5.awk 
BEGIN{sum=0
}
{s=0i=1while(i<NF){s+=$ii++}print NR "‘sum: " ssum+=s
}
END{print "sum: " sum	
}
[root@localhost ~]# awk -f script5.awk data8.txt 
1‘sum: 250
2‘sum: 273
3‘sum: 315
sum: 838

?awk編程語言支持在while循環中使用break語句和continue語句,允許你從循環中跳出。

[root@localhost ~]# cat script5.awk 
BEGIN{sum=0
}
{s=0i=1while(i<NF){s+=$ii++if(i==2)break}print NR "‘sum: " ssum+=s
}
END{print "sum: " sum	
}
[root@localhost ~]# awk -f script5.awk data8.txt 
1‘sum: 130
2‘sum: 160
3‘sum: 145
sum: 435

do-while語句

do-while 語句類似于 while 語句,這種格式保證了語句會在條件被求值之前至少執行一次。當需要在求值條件前執行語句時,這個特性非常方便。
[root@localhost ~]# cat data8.txt 
130 120 135
160 113 140
145 170 215
[root@localhost ~]# cat script6.awk 
BEGIN{sum=0
}
{s=0i=1do{s+=$ii++}while(i<NF)print NR "‘sum: " ssum+=s
}
END{print "sum: " sum	
}
[root@localhost ~]# awk -f script6.awk data8.txt 
1‘sum: 250
2‘sum: 273
3‘sum: 315
sum: 838

for語句

for 語句是許多編程語言執行循環的常見方法。 awk 編程語言支持 C 風格的 for 循環。
[root@localhost ~]# cat data8.txt 
130 120 135
160 113 140
145 170 215
[root@localhost ~]# cat script7.awk 
BEGIN{sum=0
}
{s=0for(i=1;i<NF;i++){s+=$i}print NR "‘sum: " ssum+=s
}
END{print "sum: " sum	
}
[root@localhost ~]# awk -f script7.awk data8.txt 
1‘sum: 250
2‘sum: 273
3‘sum: 315
sum: 838

內建函數

awk 編程語言提供了不少內置函數,可進行一些常見的數學、字符串以及時間函數運算。你可以在awk 程序中利用這些函數來減少腳本中的編碼工作。

數學函數

函數描述
atan2(x, y)
x/y 的反正切, x y 以弧度為單位
cos(x)
x 的余弦, x 以弧度為單位
exp(x)
x 的指數函數
int(x)
x 的整數部分,取靠近零一側的值
log(x)
x 的自然對數
rand( )
0 大比 1 小的隨機浮點值(不包括0或1)
sin(x)
x 的正弦, x 以弧度為單位
sqrt(x)
x 的平方根
srand(x)
為計算隨機數指定一個種子值

字符串函數

函數描述
asort(s [,d])
將數組 s 按數據元素值排序。索引值會被替換成表示新的排序順序的連續數字。另外, 如果指定了d ,則排序后的數組會存儲在數組 d
asorti(s [,d])
將數組 s 按索引值排序。生成的數組會將索引值作為數據元素值,用連續數字索引來表明排序順序。另外如果指定了d ,排序后的數組會存儲在數組d
gensub(r, s, h [, t])
查找變量 $0 或目標字符串 t (如果提供了的話)來匹配正則表達式r 。如果 h 是一個以 g或G 開頭的字符串,就用 s 替換掉匹配的文本。如果 h 是一個數字,它表示要替換掉第h處r 匹配的地方
gsub(r, s [,t])
查找變量 $0 或目標字符串 t (如果提供了的話)來匹配正則表達式r 。如果找到了,就
全部替換成字符串 s
index(s, t)
返回字符串 t 在字符串 s 中的索引值,如果沒找到的話返回 0
length([s])
返回字符串 s 的長度;如果沒有指定的話,返回 $0 的長度
match(s, r [,a])
返回字符串 s 中正則表達式 r 出現位置的索引。如果指定了數組a ,它會存儲 s 中匹配正則表達式的那部分
split(s, a [,r])
s FS 字符或正則表達式 r (如果指定了的話)分開放到數組a 中。返回字段的總數
sprintf(format,variables)
用提供的 format variables 返回一個類似于 printf 輸出的字符串
sub(r, s [,t])
在變量 $0 或目標字符串 t 中查找正則表達式 r 的匹配。如果找到了,就用字符串s 替換
掉第一處匹配
substr(s, i [,n])
返回 s 中從索引值 i 開始的 n 個字符組成的子字符串。如果未提供n ,則返回 s 剩下的部
tolower(s)
s 中的所有字符轉換成小寫
toupper(s)
s 中的所有字符轉換成大寫

[root@localhost ~]# awk '{print length($1)}'
hello
5
red
3[root@localhost ~]# cat script8.awk 
BEGIN{a[0] = 45a[1] = 12a[2] = 34a[3] = 5asort(a)for(i in a){print a[i]}	
}
[root@localhost ~]# awk -f script8.awk 
5
12
34
45//split可以很方便的將字段放進數組中[root@localhost ~]# cat script9.awk 
BEGIN{FS=":"
}
{split($0,var)print var[1],var[NF]
}
[root@localhost ~]# head -3 /etc/passwd | awk -f script9.awk 
root /bin/bash
bin /sbin/nologin
daemon /sbin/nologin

時間函數

函數
描述
mktime(datespec)
將一個按 YYYY MM DD HH MM SS [DST] 格式指定的日期轉換成時間戳值
strftime(format[,timestamp])
將當前時間的時間戳或 timestamp (如果提供了的話)轉化格式化日期(采用shell函數date() 的格式)
systime( )
返回當前時間的時間戳

?下面是在awk程序中使用時間函數的例子。

[root@localhost ~]# cat script10.awk 
{date=systime()print strftime("%Y %T",date)	
}
[root@localhost ~]# awk -f script10.awk 2025 21:23:542025 21:23:562025 21:23:57

自定義函數

自定義函數基本格式

function name([variables])
{
statements
return value
}

?在定義函數時,它必須出現在所有代碼塊之前(包括BEGIN代碼塊)。

[root@localhost ~]# cat script12.awk 
function leap(year){if(year%400==0){print year " is Leap Year"}else if(year%4==0 && year%100!=0)print year " is Leap Year"elseprint year " not is Leap Year"}
BEGIN{for(i=2025;i<=2050;i++){leap(i)}
}[root@localhost ~]# awk -f script12.awk 
2025 not is Leap Year
2026 not is Leap Year
2027 not is Leap Year
2028 is Leap Year
2029 not is Leap Year
2030 not is Leap Year
2031 not is Leap Year
2032 is Leap Year
2033 not is Leap Year
2034 not is Leap Year
2035 not is Leap Year
2036 is Leap Year
2037 not is Leap Year
2038 not is Leap Year
2039 not is Leap Year
2040 is Leap Year
2041 not is Leap Year
2042 not is Leap Year
2043 not is Leap Year
2044 is Leap Year
2045 not is Leap Year
2046 not is Leap Year
2047 not is Leap Year
2048 is Leap Year
2049 not is Leap Year
2050 not is Leap Year

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/73858.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/73858.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/73858.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Vue3 核心特性解析:Suspense 與 Teleport 原理深度剖析

Vue3 核心特性解析&#xff1a;Suspense 與 Teleport 原理深度剖析 一、Teleport&#xff1a;突破組件層級的時空傳送 1.1 實現原理圖解 #mermaid-svg-75dTmiektg1XNS13 {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-s…

工業界處理 Atomic 操作的優化策略

在產業界&#xff0c;處理 atomic 操作 時&#xff0c;通常會根據具體情境選擇不同的策略&#xff0c;主要取決于以下三個因素&#xff1a; 內存一致性需求&#xff1a;是否需要確保 所有線程&#xff08;threads&#xff09; 都能看到最新的變量值。性能需求&#xff1a;是否…

Python功能完美的寶庫——內置的強大“武器庫”builtins

builtins模塊包含了Python大量的內置對象&#xff08;函數、異常和類型等&#xff09;&#xff0c;她是Python的內置武器庫&#xff0c;堪稱功能完美的寶庫。 筆記模板由python腳本于2025-03-19 08:16:27創建&#xff0c;本篇筆記適合喜歡探究python的coder翻閱。 【學習的細節…

三分鐘掌握視頻分辨率修改 | 在 Rust 中優雅地使用 FFmpeg

前言 在視頻處理領域&#xff0c;調整視頻分辨率是一個繞不過去的需求。比如&#xff0c;你可能需要將一段視頻適配到手機、平板或大屏電視上&#xff0c;或者為了節省存儲空間和網絡帶寬而壓縮視頻尺寸。然而&#xff0c;傳統的FFmpeg命令行工具雖然功能強大&#xff0c;但復…

PyTorch 深度學習實戰(17):Asynchronous Advantage Actor-Critic (A3C) 算法與并行訓練

在上一篇文章中&#xff0c;我們深入探討了 Soft Actor-Critic (SAC) 算法及其在平衡探索與利用方面的優勢。本文將介紹強化學習領域的重要里程碑——Asynchronous Advantage Actor-Critic (A3C) 算法&#xff0c;并展示如何利用 PyTorch 實現并行化訓練來加速學習過程。 一、A…

【深度學習】多目標融合算法(五):定制門控網絡CGC(Customized Gate Control)

目錄 一、引言 二、CGC&#xff08;Customized Gate Control&#xff0c;定制門控網絡&#xff09; 2.1 技術原理 2.2 技術優缺點 2.3 業務代碼實踐 2.3.1 業務場景與建模 2.3.2 模型代碼實現 2.3.3 模型訓練與推理測試 2.3.4 打印模型結構 三、總結 一、引言 上一…

在線pdf處理網站合集

1、PDF24 Tools&#xff1a;https://tools.pdf24.org/zh/ 2、PDF派&#xff1a;https://www.pdfpai.com/ 3、ALL TO ALL&#xff1a;https://www.alltoall.net/ 4、CleverPDF&#xff1a;https://www.cleverpdf.com/cn 5、Doc Small&#xff1a;https://docsmall.com/ 6、Aconv…

網絡編程-實現客戶端通信

#include <stdio.h> #include <stdlib.h> #include <string.h> #include <unistd.h> #include <sys/socket.h> #include <netinet/in.h> #include <sys/select.h>#define MAX_CLIENTS 2 // 最大客戶端連接數 #define BUFFER_SI…

力扣100二刷——圖論、回溯

第二次刷題不在idea寫代碼&#xff0c;而是直接在leetcode網站上寫&#xff0c;“逼”自己掌握常用的函數。 標志掌握程度解釋辦法?Fully 完全掌握看到題目就有思路&#xff0c;編程也很流利??Basically 基本掌握需要稍作思考&#xff0c;或者看到提示方法后能解答???Sl…

【大模型實戰篇】多模態推理模型Skywork-R1V

1. 背景介紹 近期昆侖萬維開源的Skywork R1V模型&#xff0c;是基于InternViT-6B-448px-V2_5以及deepseek-ai/DeepSeek-R1-Distill-Qwen-32B 通過強化學習得到。當然語言模型也可以切換成QwQ-32B。因此該模型最終的參數量大小為38B。 該模型具備多模態推理能力&#xf…

識別并脫敏上傳到deepseek/chatgpt的文本文件中的護照信息

本文將介紹一種簡單高效的方法解決用戶在上傳文件到DeepSeek、ChatGPT&#xff0c;文心一言&#xff0c;AI等大語言模型平臺過程中的護照號識別和脫敏問題。 DeepSeek、ChatGPT&#xff0c;Qwen&#xff0c;Claude等AI平臺工具快速的被接受和使用&#xff0c;用戶每天上傳的文…

數據驅動進化:AI Agent如何重構手機交互范式?

如果說AIGC拉開了內容生成的序幕&#xff0c;那么AI Agent則標志著AI從“工具”向“助手”的跨越式進化。它不再是簡單的問答機器&#xff0c;而是一個能夠感知環境、規劃任務并自主執行的智能體&#xff0c;更像是虛擬世界中的“全能員工”。 正如行業所熱議的&#xff1a;“大…

【AI News | 20250319】每日AI進展

AI Repos 1、XianyuAutoAgent 實現了 24 小時自動化值守的 AI 智能客服系統&#xff0c;支持多專家協同決策、智能議價和上下文感知對話&#xff0c;讓我們店鋪管理更輕松。主要功能&#xff1a; 智能對話引擎&#xff0c;支持上下文感知和專家路由階梯降價策略&#xff0c;自…

nginx中間件部署

中間件部署流程 ~高級權限賬戶安裝必要的插件 -> 普通權限賬戶安裝所需要的服務 -> 高級權限賬戶開啟并設置開機自啟所安裝的服務 -> iptables放行所需要的服務 普通權限賬戶安裝NGINX中間件 1、擁有高級權限的賬戶安裝必要的插件 sudo yum install -y gcc-c make…

C語言自定義類型【結構體】詳解,【結構體內存怎么計算】 詳解 【熱門考點】:結構體內存對齊

引言 詳細講解什么是結構體&#xff0c;結構體的運用&#xff0c; 詳細介紹了結構體在內存中占幾個字節的計算。 【熱門考點】&#xff1a;結構體內存對齊 介紹了&#xff1a;結構體傳參 一、什么是結構體&#xff1f; 結構是?些值的集合&#xff0c;這些值稱為成員變量。結構…

前端應用更新通知機制全解析:構建智能化版本更新策略

引言&#xff1a;數字時代的更新挑戰 在持續交付的現代軟件開發模式下&#xff0c;前端應用平均每周產生2-3次版本迭代。但據Google研究報告顯示&#xff0c;38%的用戶在遇到功能異常時仍在使用過期版本的應用。如何優雅地實現版本更新通知&#xff0c;已成為提升用戶體驗的關…

Apache DolphinScheduler:一個可視化大數據工作流調度平臺

Apache DolphinScheduler&#xff08;海豚調度&#xff09;是一個分布式易擴展的可視化工作流任務調度開源系統&#xff0c;適用于企業級場景&#xff0c;提供了一個可視化操作任務、工作流和全生命周期數據處理過程的解決方案。 Apache DolphinScheduler 旨在解決復雜的大數據…

[藍橋杯 2023 省 B] 飛機降落

[藍橋杯 2023 省 B] 飛機降落 題目描述 N N N 架飛機準備降落到某個只有一條跑道的機場。其中第 i i i 架飛機在 T i T_{i} Ti? 時刻到達機場上空&#xff0c;到達時它的剩余油料還可以繼續盤旋 D i D_{i} Di? 個單位時間&#xff0c;即它最早可以于 T i T_{i} Ti? 時刻…

使用Trae 生成的React版的貪吃蛇

使用Trae 生成的React版的貪吃蛇 首先你想用這個貪吃蛇&#xff0c;你需要先安裝Trae Trae 官方地址 他有兩種模式 chat builder 我使用的是builder模式,雖然是Alpha.還是可以用。 接下來就是按著需求傻瓜式的操作生成代碼 他生成的代碼不完全正確&#xff0c;比如沒有引入…

AI大模型:(一)1.大模型的發展與局限

說起AI大模型不得不說下機器學習的發展史&#xff0c;機器學習包括傳統機器學習、深度學習&#xff0c;而大模型&#xff08;Large Models&#xff09;屬于機器學習中的深度學習&#xff08;Deep Learning&#xff09;領域&#xff0c;具體來說&#xff0c;它們通常基于神經網絡…