我正在使用Bash来查找矩阵的维度。这是我的代码,用于获取一行中的元素数量,但是它会打印出整个文件。我只需要ONE ROW中的元素数量。
1^I2^I3^I4$
5^I6^I7^I8$
以下是$ 1所指的内容:
body {
padding: 0;
margin: 0;
}
a {
text-decoration: none;
color: gray;
}
ul, li, ol {
list-style-type: none;
}
.logo {
content: url("../img/logo.jpg");
margin-top: 25px;
margin-left: 30px;
}
.d1navwrpr {
width: 100%;
height: auto;
}
.navbar {
width: 100%;
height: auto;
padding-bottom: 1px;
}
.navbar1 {
width: 100%;
}
.logoimg {
display: block;
width: 10%;
float: left;
}
.navbarmenu {
width: 60%;
display: block;
float: left;
}
.loginbts{
width:270px;
float: right;
padding: 20px 0px 30px 0;
}
.login {
display: block;
color:black;
font-weight: bold;
padding-top: 8px;
padding-bottom: 8px;
padding-left: 25px;
padding-right: 25px;
float:left;
}
.signup {
color: white;
font-weight: bold;
background-color: #ff3b30;
border-style: solid;
border-color: #ff3b30;
border-width: 2px;
border-radius: 45px;
padding-top: 8px;
padding-bottom: 8px;
padding-left: 25px;
padding-right: 25px;
float: left;
}
.pbold {
color: black;
font-weight: bold;
float: left;
padding: 30px 50px 30px 50px;
}
.navbaroption {
padding-left: 200px;
width: 100%;
height: auto;
display: none;
position: absolute;
padding-bottom: 20px;
z-index: 1;
top: 104;
}
.navbarmenu li a:hover .navbaroption{
display: block;
}
.navbaroption li a:hover, .navbarmenu li a:hover {
color: #ff3b30;
}
.option1 {
float: left;
}
.option1 li {
padding: 5px;
font-weight: bold;
}
.navbaroption {
display: noe;
background-color: white;
}
.navbarmenu li a:hover {
display: block;
}
.mpwrpr {
width: 100%;
padding: 0;
margin: 0;
}
出于某种原因,它打印出9而不是3。
提前致谢!
答案 0 :(得分:2)
使用:
cat $1 | head -n 1 | sed 's/\^I/\n/g' | wc -l
我只使用head
获取第一行,使用sed
将每个列分隔符替换为换行符,然后将其传递给wc
。
答案 1 :(得分:2)
您可以在调用grep之前使用sed来隔离文件的一个特定行:
sed -n '1p' file | grep -oP "^I" | wc -l
^
^
# will print the 1st line, 2p will print the second line etc
在你的输入上它给出了:
答案 2 :(得分:1)
使用awk
$ awk -F'\\^I' 'NR==1{print NF-1}' $1
3
-F'\\^I'
使用^I
作为字段分隔符NR==1
仅限第一行print NF-1
因为问题是关于计算^I
的数量,需要打印字段数减去一个另外,如果$1
是传递给shell脚本的参数,请使用"$1"
作为良好做法
并猜测,这是OP正在使用的实际数据
$ cat ip.txt
1 2 3 4
5 6 7 8
$ cat -A ip.txt
1^I2^I3^I4$
5^I6^I7^I8$
$ # exit to avoid unnecessary processing of other lines
$ awk -F'\t' 'NR==1{print NF-1; exit}' ip.txt
3
答案 3 :(得分:1)
sed 's:\^I:\n:g; q' | wc -l
^ ^
|_______|_______ change all ^I to \n
|_______ quit after first line